当前位置:编程学习 > C#/ASP.NET >>

关于中文字符串的截断和拼接

具体是这样的:
   服务器从文件中按固定长度读取数据然后发送给客户端,客户端接受然后拼接上写入数据库。
   服务器固定长度读取文件的时候,因为中文是2个字节,正好截在一个中文的一半上。。。然后我客户端拼数据的时候得到了乱码- -,求解决办法,附上我现在拼接string的函数:
            MemoryStream s = new MemoryStream();
            byte[] half = System.Text.Encoding.Default.GetBytes(strHalf);
            byte[] data = System.Text.Encoding.Default.GetBytes(strData);
            s.Write(half, 0, half.Length);
            s.Write(data, 0, data.Length);
            return System.Text.Encoding.Default.GetString(s.ToArray());
拼接例子:
比如:管理员
服务器截断成:管*    #员   这两个string
客户端拼接后:管*#员 C# string --------------------编程问答-------------------- 这不简单嘛,遇到有中文超长的,就少发送1个字符,用'\0'填充。 --------------------编程问答--------------------
引用 1 楼 caozhy 的回复:
这不简单嘛,遇到有中文超长的,就少发送1个字符,用'\0'填充。

我这只是做客户端,现在服务器只是我自己模拟的一个后台用来模块测试。所以真正的服务器那边是不会管他发的数据里有没有中文的,截到哪算哪。。。。所以服务器那边不会动。。。。求指教。。。。 --------------------编程问答-------------------- return System.Text.Encoding.Default.GetString(half.Concat(data).ToArray()); --------------------编程问答--------------------
引用 3 楼 caozhy 的回复:
return System.Text.Encoding.Default.GetString(half.Concat(data).ToArray());

试过了,不行啊,Concat这个函数的原理应该跟我写的一样吧,先把数据都放到内存里,再拿出来。 --------------------编程问答-------------------- 换一个编码器试一下呢?

比如System.Text.UnicodeEncoding获取System.Text.UTF8之类的? --------------------编程问答-------------------- 你没有明白我的意思。

你直接把传过来的数据放入byte[]然后拼接,之间不要解码。 --------------------编程问答-------------------- 遇到中文的地方,先转化为Byte,然后拼接,然后再转化为中文,这样应该可以的 --------------------编程问答--------------------
引用 6 楼 caozhy 的回复:
你没有明白我的意思。

你直接把传过来的数据放入byte[]然后拼接,之间不要解码。

次奥,搞了一下午还是不行,真的只有这个办法?我前面还用string解析数据了阿,真改这样那我整个框架都得变啊
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,