我在套接字上向客户端发送了一些文字。这只是文字。但有时候我有问题。当我的一些客户端在套接字上获取我的发送文本时。他们看到这个文字不正确。非Unicode级别的不正确含义。他们有这样的土耳其人的问题(İ,Ö,Ü,Ğ)所以他们没有得到我的文字。当我将此用户位置信息更改为((在区域和语言 - > administrative->更改系统区域设置=土耳其(在Windows 7上))或(更改非unicode语言=土耳其语)时,问题就消失了。
如何解决此问题。我为此读了一些文章,它告诉你不能在代码behinde.so上更改这个如何为这个问题创建一个sloution。
非常感谢你 最诚挚的问候
答案 0 :(得分:2)
当您通过套接字发送字符串时,如何将其转换为字节,接收器如何将这些字节转换回字符串?您遇到的问题是发件人使用的字符编码与接收者的字符编码不匹配。将字符串转换为字节时应该执行的操作是使用内置的编码类之一,例如UTF8Encoding
var str = ...; //whatever needs to be sent via socket
var utf8 = Encoding.UTF8;
var bytes = utf8.GetBytes(str);
socket.Send(bytes)
您可能希望将块中的输入读入缓冲区并从那里通过套接字发送,但这是一般的想法。另一端的接收器应使用相同的编码将收到的byte
转换回string
。
See this page on MSDN了解有关编码的更多信息。
答案 1 :(得分:1)
您可以像这样设置当前线程的CultureInfo:
CultureInfo ci = new CultureInfo("tr-TR");
Thread.CurrentThread.CurrentCulture = ci;
Thread.CurrentThread.CurrentUICulture = ci;
(不要忘记为每个新线程执行此操作)