我有一个小型应用程序客户端/服务器应用程序。客户端应用程序(C#),服务器端(VC ++)。我的应用程序将使用流将任何字符发送到服务器端;除非非英语,英语字符工作正常。 VC ++使用CString从流中接受这些数据。我修复了一些变音字符,以便在收到时正确读取但有些字符不起作用。 客户端在发送之前使用UnicodeEncoding()对此字符进行编码。它在字符É,À,È,Ù,Ê,Î,Ô,Û,Ë,Ï,Ö,Ü上工作正常,除了Ÿ(这个将在服务器端读作x_)并且土耳其字符被错误地读取
的问题:
示例代码将是一个很好的帮助。
感谢。
答案 0 :(得分:1)
以下代码有效。因此,数据正在被更改,或者某个地方没有刷新缓冲区。我通常建议检查字节数并查看字节数的更改位置。通常它是一个未设置为unicode的流类。
string input = "ÉÀÈÙÂÊÎÔÛËÏÖÜŸ";
byte[] temp = Encoding.Unicode.GetBytes(input);
string output = Encoding.Unicode.GetString(temp);
答案 1 :(得分:0)
如果有人遇到同样的问题。
以下是我解决问题的方法。 在客户端
curl -XPUT "http://localhost:9200/againagain/" -d'
{
"mappings": {
"_default_": {
"properties": {
"service": {
"type": "integer"
},
"rule": {
"type": "integer"
},
"ICMP Type": {
"type": "integer"
},
"ICMP Code": {
"type": "integer"
},
"ip_offset": {
"type": "integer"
},
"ip_id": {
"type": "integer"
},
"ip_len": {
"type": "string",
"index": "not_analyzed"
},
"Confidence Level": {
"type": "integer"
},
"fragments_dropped": {
"type": "integer"
},
"Severity": {
"type": "string",
"index": "not_analyzed"
},
"serial_num": {
"type": "integer"
},
"during_sec": {
"type": "integer"
},
"Attack info": {
"type": "string",
"index": "not_analyzed"
},
"peer gateway": {
"type": "string",
"index": "not_analyzed"
},
"SmartDefense Profile": {
"type": "string",
"index": "not_analyzed"
},
"FollowUp": {
"type": "string",
"index": "not_analyzed"
},
"attack": {
"type": "string",
"index": "not_analyzed"
},
"type": {
"type": "string",
"index": "not_analyzed"
},
"Performance Impact": {
"type": "string",
"index": "not_analyzed"
},
"reject_category": {
"type": "string",
"index": "not_analyzed"
},
"action": {
"type": "string",
"index": "not_analyzed"
},
"ICMP": {
"type": "string",
"index": "not_analyzed"
},
"inzone": {
"type": "string",
"index": "not_analyzed"
},
"dn": {
"type": "string",
"index": "not_analyzed"
},
"proto": {
"type": "string",
"index": "not_analyzed"
},
"dst": {
"type": "string",
"index": "not_analyzed"
},
"message_info": {
"type": "string",
"index": "not_analyzed"
},
"rule_uid": {
"type": "string",
"index": "not_analyzed"
},
"CookieI": {
"type": "string",
"index": "not_analyzed"
},
"interface": {
"type": "string",
"index": "not_analyzed"
},
"IKE": {
"type": "string",
"index": "not_analyzed"
},
"TCP packet out of state": {
"type": "string",
"index": "not_analyzed"
},
"service_id": {
"type": "string",
"index": "not_analyzed"
},
"vpn_feature_name": {
"type": "string",
"index": "not_analyzed"
},
"Protection Type": {
"type": "string",
"index": "not_analyzed"
},
"src": {
"type": "string",
"index": "not_analyzed"
},
"fw_subproduct": {
"type": "string",
"index": "not_analyzed"
},
"protection_id": {
"type": "string",
"index": "not_analyzed"
},
"Protection Name": {
"type": "string",
"index": "not_analyzed"
},
"tcp_flags": {
"type": "string",
"index": "not_analyzed"
},
"Internal_CA": {
"type": "string",
"index": "not_analyzed"
},
"outzone": {
"type": "string",
"index": "not_analyzed"
},
"scheme": {
"type": "string",
"index": "not_analyzed"
},
"Reason": {
"type": "string",
"index": "not_analyzed"
},
"message": {
"type": "string",
"index": "not_analyzed"
},
"product": {
"type": "string",
"index": "not_analyzed"
},
"Industry Reference": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
}'
在服务器端 使用带有CP_UTF8参数的CW2A转换字符串
if (IsUnicode(str))
{
writer.Write((uint)str.Length + 1);
writer.Write(Encoding.Unicode.GetBytes(str));
}
private bool IsUnicode(string text)
{
if (string.IsNullOrEmpty(text))
return false;
foreach (char c in text)
{
if (c > 0x7F)
return true;
}
return false;
}