我有一个小型应用程序客户端/服务器应用程序。客户端应用(C#),服务器端(VC ++)。我的应用程序将使用流将任何字符发送到服务器端;英文字符可以正常工作,除非非英语。VC ++使用CString从流中接受此数据。我修复了一些变音符号,使其在收到时可以正确读取,但其中一些不起作用。客户端在发送之前使用UnicodeEncoding()对该字符进行了编码。它在É,À,È,Ù,Â,Ê,Î,Ô,Û,Ë,Ë,Ï,Ö,Ü上可以正常工作,但Ÿ(此字符在服务器端将读为x_)和土耳其语字符读取不正确。
问题:
样例代码将有很大的帮助。
谢谢。
万一有人偶然遇到同样的问题。
这是我解决问题的方法。在客户端
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;
}
在服务器端使用带有CP_UTF8参数的CW2A转换字符串
CStringA str = CW2A(m_CString, CP_UTF8);
m_CString.Format(_T("%s"), str);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句