首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >没有为C#编译的Google缓冲区

没有为C#编译的Google缓冲区
EN

Stack Overflow用户
提问于 2016-07-28 14:11:01
回答 6查看 3.8K关注 0票数 1

这是我第一次尝试用Google缓冲区编写一个原型。我的档案是这样的:

代码语言:javascript
复制
syntax = "proto3";
package Clark.EDI.Protos;

// [START csharp_declaration]
option csharp_namespace = "Clark.EDI.Protos";
// [END csharp_declaration]

// [START messages]
message Address {
  required int32 addressId = 1;
  optional string namePrimary = 2;
  optional string nameSecondary = 3;
  optional string streetPrimary = 4;
  optional string streetSecondary = 5;
  optional string city = 6;
  optional string stateCode = 7;  
  optional string zipCode = 8;
  optional string countryCode = 9;  
}
// [END messages]

我试着像这样编译它:

protoc _out=src address.proto

即使我把它定义为proto3,它也是要求必需的或可选的。

当我包含requiredoptional时,我会收到这些消息,但没有收到.cs文件。

address.proto:1:1:解释非ascii码点239。address.proto:1:1:预期的顶级语句(例如"message")。address.proto:1:2:解释非ascii码点187。address.proto:1:3:解释非ascii码点191。

我错过了什么或者做错了什么?

EN

回答 6

Stack Overflow用户

发布于 2016-07-28 14:45:13

我认为您的文本编辑器正在悄悄地在address.proto文件的开头插入字节顺序标记。错误消息意味着文件中的前三个字节是239 187 191,或EF BB BF,它是UTF-8字节顺序标记:

代码语言:javascript
复制
Encoding    Hexadecimal    Decimal        CP1252 characters
UTF-8       EF BB BF       239 187 191    

维基百科

你用的是哪个文本编辑器?如果您在Windows上,请尝试在记事本或Notepad++中打开文件。如果您摆弄编码设置,您应该会在文件开始时看到3个意想不到的字符。把他们移走。

票数 2
EN

Stack Overflow用户

发布于 2016-07-28 16:19:16

如果您使用的是protoc二进制v3,则将删除所需/可选的关键字。

因此,删除所有必需的/可选的关键字

我使用V3编译了您的消息,在删除了必需的/可选的关键字之后成功地编译了它。

注意:将您的文件保存为ANSI或UTF-8,不要保存为UniCode。

您可以将v3安装为nuget包。

票数 1
EN

Stack Overflow用户

发布于 2017-01-04 06:26:26

我也面临着同样的问题,因为我是从pdf中复制出来的。在我用手编码之后,它就起作用了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38638951

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档