我有一个客户端/服务器架构,其中交换文本格式的消息。
例如:
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 也必须是 nvarchar 而不是 varchar。