Encoding.GetEncoding( "iso-8859-1" ).GetBytes("中文") 结果不是 4 个字节?

jmcooler 2014-05-12 08:53:24
byte[] someData = Encoding.GetEncoding( "iso-8859-1" ).GetBytes( "中文" );
//按照 http://hi.baidu.com/gulin20475/item/7e9f761e50454d613f87ce00 对 ISO-8859-1 的介绍,someData 内将包含 "d6 d0 ce c4" 四个字节
FileStream stream = new FileStream( "e:\\abc.txt", FileMode.Create );
stream.Write( someData, 0, someData.Length );
stream.Close();
((IDisposable)stream).Dispose();

​string sss = Encoding.GetEncoding( "iso8859-1" ).GetString( someData );
转回去,也应该能是原来的“中文”二字才对啊
但实际上,someData 只有两个字节,且都是 63
abc.txt 内容也只有 2 字节
...全文
392 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
宝_爸 2014-05-12
  • 打赏
  • 举报
回复
xdashewan 2014-05-12
  • 打赏
  • 举报
回复
引用 3 楼 jmcooler 的回复:
那为何 RFC 对 http 的 content-disposition 中有关文件名的编码,推荐用 ISO-8859 系列? Content-Type: multipart/form-data Content-Disposition: attachment; filename="文件名.zip" 其中的 “文件名.zip”,一般需要进行编码,以支持国际化 如果对此文件名,采用 ISO-8859-1 字符集编码,除非接收方明确知道你用的是中文,否则接收方处理成欧洲语言了
别人说的文件名.zip不是让你用中文文件名啊
宝_爸 2014-05-12
  • 打赏
  • 举报
回复
我用的Encoding.UTF8,没有问题啊。
jmcooler 2014-05-12
  • 打赏
  • 举报
回复
那为何 RFC 对 http 的 content-disposition 中有关文件名的编码,推荐用 ISO-8859 系列? Content-Type: multipart/form-data Content-Disposition: attachment; filename="文件名.zip" 其中的 “文件名.zip”,一般需要进行编码,以支持国际化 如果对此文件名,采用 ISO-8859-1 字符集编码,除非接收方明确知道你用的是中文,否则接收方处理成欧洲语言了
xdashewan 2014-05-12
  • 打赏
  • 举报
回复
看文章要仔细,别人明说了“很明显,iso8859-1编码表示的字符范围很窄,无法表示中文字符。” 另外此字符集支持部分于欧洲使用的语言,包括阿尔巴尼亚语、巴斯克语、布列塔尼语、加泰罗尼亚语、丹麦语、荷兰语、法罗语、弗里西语、加利西亚语、德语、格陵兰语、冰岛语、爱尔兰盖尔语、意大利语、拉丁语、卢森堡语、挪威语、葡萄牙语、里托罗曼斯语、苏格兰盖尔语、西班牙语及瑞典语。 英语虽然没有重音字母,但仍会标明为ISO/IEC 8859-1编码。除此之外,欧洲以外的部分语言,如南非荷兰语、斯瓦希里语、印尼语及马来语、菲律宾他加洛语等也可使用ISO/IEC 8859-1编码。
宝_爸 2014-05-12
  • 打赏
  • 举报
回复
文中说了iso-8859-1 不支持中文。 d6 d0 ce c4是GB2312的编码数据。

111,098

社区成员

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

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

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