我正在序列化包含字符串中一些不可見字符的消息。它工作得很好,但我不知道是否有可能在字符串字段的默認值中有一個不可見的字符。默認字符串值中的不可見字符
類似的東西:
Message test1 {
optional string testField = 1 [default = "<STX>"];
}
有什麼解決辦法做到這一點?
我正在序列化包含字符串中一些不可見字符的消息。它工作得很好,但我不知道是否有可能在字符串字段的默認值中有一個不可見的字符。默認字符串值中的不可見字符
類似的東西:
Message test1 {
optional string testField = 1 [default = "<STX>"];
}
有什麼解決辦法做到這一點?
這取決於您是使用.proto模式還是先使用代碼。在後一種情況 - 肯定的:只要告訴它你想要什麼:
[ProtoContract]
class Test1 {
private const string STX = "\u0002";
[ProtoMember(1), DefaultValue(STX)]
public string TestField1 { get; set; }
public Test1() {
TestField1 = STX;
}
}
其中"\u0002"
是一個C#的文字爲STX令牌,代碼點用值2
如果您正在使用.proto ;那麼一切都認真我不知道。 .proto的language guide沒有提及任何有關字符串轉義規則的內容。我可以調查(但不是「現在」),但在這裏沒有特別的答案是「明顯的」。如果你碰巧已經知道其他基於原始發電機的答案,那麼我全都是耳朵。
感謝您的回覆,我使用.proto模式。 我只是用Nanopb試過這種.Proto。 Unicode字符在.pb.c文件中被轉換爲值「\ x02」。 – William
@William所以它實際上是在.pb.c中的STX?嗯......我可能必須調整protogen來支持這些 –
你能說清楚「隱形人物」是什麼意思嗎?我複製/粘貼了該文本,看看這裏是否有一個unicode - 它*看起來像5個字符。那麼:這裏的「隱形」是什麼? –
「隱形字符」我的意思是Unicode。您可以將「」替換爲實際值:「」。 –
William