【急】C#中字符串使用GB2312变成byte补位问题。

星火燎猿 2011-05-13 11:58:41
问题如题:
例如我要发送:1A你好
转成byte以后是49,65,196,227,186,195
现在想把之前的49,65通过补位的方式将单字节的变成双字节的怎么做?
先回答并且经采用的,分多给。
...全文
352 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
我姓区不姓区 2011-05-13
  • 打赏
  • 举报
回复

string str = "1A你好";
byte[] bs = Encoding.GetEncoding("gb2312").GetBytes(Regex.Replace(str, "([^\\u4E00-\\u9FA5\\uF900-\\uFA2D])", "\0$1"));

csproj 2011-05-13
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 jiabiao113 的回复:]

你显示的全是乱码,只能说明设备不知是GB2312字符。你应该试试把字符转换为UTF8 或者Unicode
[/Quote]
不只是->不支持
vrhero 2011-05-13
  • 打赏
  • 举报
回复
那你就用定长字符集好了,UTF-16...不过你的设备得支持才行...
csproj 2011-05-13
  • 打赏
  • 举报
回复
外接设备也不需要补齐
它能把 196,227 识别为“你” 就肯定能识别 49 65这些ASCII字符
因为ASCII是GB2312的子集。


你显示的全是乱码,只能说明设备不知是GB2312字符。你应该试试把字符转换为UTF8 或者Unicode
lihanbing 2011-05-13
  • 打赏
  • 举报
回复
C# string本身用的UNICODE已经是双字节了,为啥要用GB2312发
星火燎猿 2011-05-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 vrhero 的回复:]
干嘛要补位?浪费带宽?多字节编码字符集就是变长的,自动会识别...
[/Quote]
嗯,如果是电脑和电脑直接相互转没有问题,但是在外接设备里面就要补齐,不然显示出来的全是乱码。
vrhero 2011-05-13
  • 打赏
  • 举报
回复
干嘛要补位?浪费带宽?多字节编码字符集就是变长的,自动会识别...
星火燎猿 2011-05-13
  • 打赏
  • 举报
回复
多谢
ojlovecd
同时也感谢各位的参与,问题解决了,现在结分。

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧