C # изменить не Unicode язык или изменить местоположение - PullRequest
1 голос
/ 13 октября 2011

Я посылаю несколько текстовых слов моему клиенту на сокете. Это всего лишь текст. Но иногда у меня проблемы. Когда мой клиент получает мой отправленный текст на сокете. Они увидели этот текст неверным. Неправильное значение уровня nonUnicode. У них есть проблема (İ, Ö, Ü, Ğ), как этот турецкий персонаж, поэтому они не получили мой текст. Когда я изменяю информацию о местоположении этого пользователя на ((для региона и языка-> административный-> Изменить системный языковой стандарт = Турция (в Windows 7)) или (изменить язык не в Unicode = турецкий)) проблема исчезла.

Как я могу решить эту проблему. Я прочитал некоторую статью для этого, он сказал вам, что вы не можете изменить это в коде behinde.so Как я могу создать решение для этой проблемы.

Большое спасибо С наилучшими пожеланиями

Ответы [ 2 ]

2 голосов
/ 13 октября 2011

Когда вы отправляете строку через сокет, как вы преобразуете ее в байты и как получатель преобразует эти байты обратно в строку?Проблема, с которой вы сталкиваетесь, заключается в том, что используемая у отправителя кодировка символов не совпадает с кодировкой получателя.Когда вы преобразуете строку в байты, вам следует использовать один из встроенных классов кодирования, например UTF8Encoding

var str = ...; //whatever needs to be sent via socket    
var utf8 = Encoding.UTF8;
var bytes = utf8.GetBytes(str);
socket.Send(bytes)

. Возможно, вы захотите прочитать входные данные в виде кусков в буфер иотправьте его через сокет оттуда, но это общая идея.Приемник на другом конце должен использовать ту же кодировку для преобразования byte s, полученных обратно в string.

См. Эту страницу в MSDN для получения дополнительной информации о кодировках.

1 голос
/ 13 октября 2011

Вы можете установить CultureInfo вашей текущей темы следующим образом:

CultureInfo ci = new CultureInfo("tr-TR");
Thread.CurrentThread.CurrentCulture = ci;
Thread.CurrentThread.CurrentUICulture = ci;

(не забудьте сделать это для каждой новой темы)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...