作者danny8376 (钓到一只猴子@_@)
看板java
标题Re: [问题] big5转utf8
时间Tue Mar 25 15:47:29 2014
※ 引述《Lordaeron (Terry)》之铭言:
: ※ 引述《LPH66 (186106078)》之铭言:
: : getBytes 应该就正是你所需要的东西
: : String.getBytes 共有四个 overload, 其中一个是旧时代的东西所以不管它
: : 剩下的三个是
: : getBytes()
: : getBytes(Charset)
: : getBytes(String)
: : 你用的应该是第一个, 它会转成你的 system default charset
: : 你所需要的则是第二或第三个, 所传进去的参数代表你要转成的 charset
: : 第二个用 Charset 物件, 第三个则是直接传入那个 Charset 的名字
: : 最简单的做法就是用第三个然後传入 "UTF-8" 就可以了
: : ---
: : 另外顺带一提, Java 的 String 内部是 Unicode
: : 如果从来源字串有正确的转成 String 的话那这个问题就跟来源字串完全无关了
: : 检查方法可以试着直接把那个 String 给印出来, 是你要的那就没问题
: Java 的 String 内部是 Unicode 是指什麽呢?
: 你打开一个Big5存的文字档, 读取其中的内容, 用READLINE, 读到字串中,
: 哪麽, 这字串的编码会是?
内部是unicode存在记忆体
就像Win现行所有程式在记忆体内都是UTF-16编码一样的状况
也就是说当你用big5去读取big5的档案
这中间会把档案用你指定的big5去解码
解完之後转成unicode(UTF-16)之後塞进记忆体里
而当你要输出到OutputStream的时候
又会把这unicode转成你要的编码
这是所有支援unicode的程式内部会有的处理模式
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.115.216.102
1F:→ Lordaeron:若果是这麽聪明, 为何会有encoding的参数的呢? 03/25 15:56
2F:推 LPH66:"这中间会把档案用你指定的big5去解码" 该参数就是这个指定 03/25 16:13
3F:→ LPH66:当不指定时通常会取用我所写的 system default charset 03/25 16:15
4F:→ LPH66:所以这部份很多人并不会去注意到, 因为已经这样处理掉了 03/25 16:18
5F:→ Lordaeron:你还是回一下我的问题吧. 03/25 16:27
6F:→ danny8376:用big5 你要的编码 <= 这就是encoding参数 懂? 03/25 17:51
7F:推 LPH66:咦, 我以为我在二楼已经回了你的问题了...看来是我语焉不详 03/26 02:26
8F:→ LPH66:我应该要详细说"你问的encoding参数就是这回文中所提到的 03/26 02:28
9F:→ LPH66:「用你指定的big5」这个指定" 这样才不会被忽略过去... 03/26 02:30
10F:→ adrianshum:Java 中 "字串" 的编码永远是 UTF-16. Period. 03/30 22:28
11F:→ adrianshum:Lordaeron 建议还是去看一些基础的文章之类,搞清楚 03/30 22:30
12F:→ adrianshum:byte & char 在 Java 中的概念。 03/30 22:31