У меня есть архитектура Client/Server, где обмениваются сообщения в текстовом формате.C# chinese Encoding/Network
Например:
12 2013/11/11 abcd 5
^ ^ ^^
int date text int
Все отлично работает с "нормальным" текстом. Теперь это китайский проект, поэтому они также хотят отправить китайские символы. Кодирование GB18030 или GB2312.
Я читать данные таким образом:
char[] dataIn = binaryReader.ReadChars(length);
тогда я создать новую строку из массива полукокса и преобразовать его в правильный тип данных (INT, поплавка, строки и т.д.).
Как я могу изменить/включить китайское кодирование или преобразовать значения строк в китайский? И что было бы хорошо & простой способ проверить это. Спасибо.
Я пытался использовать что-то вроде этого
string stringData = new string(dataIn).Trim();
byte[] data = Encoding.Unicode.GetBytes(stringData);
stringData = Encoding.GetEncoding("GB18030").GetString(data);
без успеха.
Также мне нужно сохранить некоторые текстовые значения в MS SQL Server 2008, возможно ли это - мне нужно настроить что-нибудь особенное?
Я также пробовал этот пример с хранением в базе данных и печатью на консоли, но я просто получаю ????????
string chinese = "123东北特钢大连新基地testtest";
byte[] utfBytes = Encoding.Unicode.GetBytes(chinese);
byte[] chineseBytes = Encoding.Convert(Encoding.Unicode, Encoding.GetEncoding("GB18030"), utfBytes);
string msg = Encoding.GetEncoding("GB18030").GetString(chineseBytes);
Редактировать Проблема была с INSERT запросов, которые я посылаю в базу данных. Я исправил его с помощью N 'перед строкой.
sqlCommand = string.Format("INSERT INTO uber_chinese (columnName) VALUES(N'{0}')", myChineseString);
Кроме того, data data column должен быть nvarchar вместо varchar.
Вы ознакомились с классом ['Encoding'] (http://msdn.microsoft.com/en-us/library/system.text.encoding.aspx)? – Oded
@HectorLector - просто прочитайте данные, используя требуемую кодировку. Обычно это указывает на то, что вы храните эту информацию и в сообщении. –
Класс 'BinaryReader' предлагает конструкторы, в которых вы указываете' Encoding'. Вы пытались что-то вроде «new BinaryReader (inputStream, Encoding.GetEncoding (« GB18030 »))?? –