テキスト形式のメッセージが交換されるクライアント/サーバー アーキテクチャがあります。
例えば:
12 2013/11/11 abcd 5
^ ^ ^ ^
int date text int
すべてが「通常の」テキストで正常に機能します。現在、これは中国のプロジェクトであるため、中国のシンボルも送信したいと考えています。GB18030 または GB2312 のエンコード。
私はこのようにデータを読みました:
char[] dataIn = binaryReader.ReadChars(length);
次に、char 配列から新しい文字列を作成し、正しいデータ型 (int、float、string など) に変換します。
中国語のエンコードを変更/有効にしたり、文字列値を中国語に変換したりするにはどうすればよいですか? そして、これをテストするための良い&簡単な方法は何でしょうか。ありがとう。
私はこのようなものを使ってみました
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);
また、列 dataType は varchar ではなく nvarchar である必要があります。