[问题] GBK转编码

楼主: pkmu8426 (巴426)   2014-06-17 11:24:08
各位先进好,
目标字(范例): 蹈桶狟婥
我测了一些方式, 想把这串GBK编码的文字转成可识别的中文, 无论是简或繁。
目前已知
1. .Net中任何String的表示形式 都是Unicode
2. System.text.Encodng class提供一些 API可以转
3. 转换时要指定输入编码 输出编码, 并一律以byte[]形式进行转换
相关语法
ex. Encoding.getEncoding("编码").getbytes(string) (转成byte[])
Encoding.convert(原编码,目标编码, 要转的byte[]) (转成byte[])
Encoding.getEncoding("编码").getString(byte[]) (转成string)
等等...
我做了各种测试 但是找不到正确的用法把GBK文字转成中文
顶多show出的结果是原来的GBK目标字而不是乱码。
不晓得原因为何?
如果是.NET不支援GBK, 但我测试过 下面这行
StreamReader(path + ".txt",Encoding.GetEncoding("GBK"));
编码却是转换成功的, 可以正确显示中文。
请问有人知道怎解吗? 谢谢。
楼主: pkmu8426 (巴426)   2014-06-17 15:37:00
不好意思 补充一下 官方语法我有测过, 也都是byte[]时转转出来的结果却是失败@ @有按照相对应的码去接和解 用法应该是没用错
作者: Litfal (Litfal)   2014-06-17 17:07:00
答:列表下载你一定想反了。你想想你最后是因为哪个decode才拿到错的字串?再反推回去就会得到答案了。
作者: watermark001   2014-06-17 23:21:00
目前windows系列编码都是GB编码~
作者: Litfal (Litfal)   2014-06-18 00:32:00
.net的string就是string,虽然他在内存中是unicode,但我不建议把编码的概念和string混淆,把它想的最单纯--就是个string就对了。只有二进制和String互相转换时,才该想到编码。
作者: ideaup (ideaupsoho)   2014-06-18 11:08:00
蹈桶狟婥==列表下载
作者: nfsong (圖書館我來了)   2014-06-18 12:41:00
作者: ssccg (23)   2014-06-18 13:54:00
string就是string没有编码,所谓编码是把string表示成byte时的数值,如"列"在GB是C1D0,在Big5是A643,UTF8是E58897"蹈"在Big5是C1D0,不是"蹈桶狟婥"内容是GBK,而是当初把"列表下载"用GBK编码成C1D0....,然后再用Big5解码的结果这单纯是编解码的问题,跟转码没有关系
作者: ideaup (ideaupsoho)   2014-06-18 19:46:00
将(蹈桶狟婥)以ansi 格式储档, 读取为bytes[],再处理

Links booklink

Contact Us: admin [ a t ] ucptt.com