Re: [问题] big5转utf8

楼主: darkk6 (Mr. Pan)   2014-03-26 13:33:58
※ 引述《del680202 (HANA)》之铭言:
: 有试着爬过文,但是没找到解法
: 最近要做资料传递
: 但是问题是server端是utf-8的编码环境
: 而client是big5的编码环境
: 现在策略是client端统一把资料转utf-8文字传过去
: 我试着估狗,但是找到的答案都是用getBytes方式去转
: 可是我实际测试了尽管用getBytes去拿到utf-8文字
: 他也只是假性当作utf-8,骨子里还是big5文字
错~ 骨子里是一连串的 bytes 资料
传送资料的时候都是用 byte , 所以无论如何请将资料以 byte 来看待
我们知道文字的编码是一种规范(参考高中资讯课程第二章)
变成版标了 \OwO/ , 重新翻了一下课本应该是第一章啦 XD
大家耳熟能详的就是 Big-5 UTF-8 Unicode GB...
资料要传出去的时候是以 byte 进行传送, 也就是根据文字的编码决定
"转成哪些 bytes" , 参考 http://ideone.com/PelQG4
范例中可以看到 "哈" 这个字的 Big-5 编码是 AB A2 , UTF-8 为 E5 93 88
系统默认和 UTF-8 相同就表示这个系统的默认编码是 UTF-8
PS : 系统指的是 OS , 作业系统,并非 Java
假设一个文字档只有一个字 "哈" , 并且是以 Big-5 编码储存,就表示
其 Binary 内容是 AB A2 , 那么,在不只定 Reader (或 InputStream)
读取文字编码的状况下,使用系统默认(这边假设是 UTF-8) , 会得到什么结果呢 ?
就会像这样: http://ideone.com/wweTqe , 目前还不用去管在程式
里面他用什么方式取储存。
记住,资料传输都用 Bytes , 因此在读取资料的时候,要根据你取得什么样子的
Bytes 去调整用什么方式来解释他、 "看待" 他
至于送出的时候(我记得原PO是在做 socket ?),也要指定输出的格式
一个字串 "哈" 储存在程式里面,现在要送出去的时候一样需要转换成 bytes
但这边就遇到了编码问题,要转换成那些 bytes 送出?
是 AB A2 还是 E5 93 88 ? 这就是在决定 getBytes("这里") 要采用何种编码。
如果我 Server 将文字以 Big-5 编码送出,那么就会送出 AB A2 两个 bytes
Client 把收到的资料指定用 Big-5 来 "看待" 的话,就可以正常地取出 "哈"
这个字了。
至于何谓 Java 里面使用 Unicode ? 这就是上面我说目前不用去管的部分。
先看范例 : http://ideone.com/RjzhvU
从此例子中可以看到 "哈" 在 Unicode 里面是 54 C8
※ FE FF 称为 BOM , 和文字本身无关,参考 http://ppt.cc/7KiZ
接着我们各自使用正确的编码建立 Big5 和 UTF8 的文字,利用
codePointAt 取得文字的编码(16 进位),可以发现无论是从 Big5 或者 UTF-8
编码而来的文字,到 java 里面都是 Unicode 的方式储存
http://ideone.com/RwF0c8
"哈" = 0x54C8
Client 储存
=> 转换后准备送出
作者: danny8376 (钓到一只猴子@_@)   2014-03-26 17:42:00
推详解www
作者: swpoker (swpoker)   2014-03-27 09:03:00
我高中没教阿
作者: summerleaves (内湖全联先生)   2014-03-28 10:57:00
高中没教 +1 可能是年纪大了一点
作者: PsMonkey (痞子军团团长)   2014-03-28 11:18:00
高中的时候,倚天中文还是先进产品 (艸
作者: Lordaeron (Terry)   2014-03-28 11:30:00
我认为, 是你们读的学校不同的关系.高中就学完search and sort,会写简单的GAME的很多.
楼主: darkk6 (Mr. Pan)   2014-03-28 18:25:00
这篇主题是不是变了啊 XDD
作者: kiwatami (悠游自在)   2014-03-29 22:04:00
请问darkk6大大是用哪种IDE开发啊? 要改什么设定才可以在console同时显示big5跟utf-8的文字?
楼主: darkk6 (Mr. Pan)   2014-03-30 08:52:00
并没有同时显示 UTF8 和 Big5 阿 @@ 我哪里有说XDDDD
作者: kiwatami (悠游自在)   2014-03-30 10:14:00
我没有质疑你的意思啦XD 只是最近我也在搞编码非utf-8都会显示成乱码 很难debug
楼主: darkk6 (Mr. Pan)   2014-03-30 15:35:00
我知道啦XD 是想说我没提到我在IDE有用两种编码 XD

Links booklink

Contact Us: admin [ a t ] ucptt.com