java 板


LINE

※ 引述《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 储存 => 转换後准备送出 -- Socket 传送 --> 收到准备转换 => Server 储存 (指定 Big5) 54C8 => ABA2 ---- Socket 传送 ----> ABA2 => 54C8 (指定 UTF-8) 54C8 => E59288 ---- Socket 传送 ----> E59288 => 54C8 结论: 简单来说请记得资料再传送和读写,都以 Bytes 去想 话说有人提到 javac -encoding 的样子 ? 这个 encoding 是指你的 Souce Code ( .java )是什麽编码的文字档 和执行时的编码完全无关 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 210.60.161.229
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/java/M.1395812048.A.BFB.html ※ 编辑: darkk6 来自: 210.60.161.229 (03/26 16:28) ※ 编辑: darkk6 来自: 210.60.161.229 (03/26 16:31)
1F:推 danny8376:推详解www 03/26 17:42
2F:→ swpoker:我高中没教阿 03/27 09:03
3F:推 summerleaves:高中没教 +1 可能是年纪大了一点 03/28 10:57
4F:推 PsMonkey:高中的时候,倚天中文还是先进产品 (艹 03/28 11:18
5F:→ Lordaeron:我认为, 是你们读的学校不同的关系. 03/28 11:30
6F:→ Lordaeron:高中就学完search and sort,会写简单的GAME的很多. 03/28 11:32
7F:→ darkk6:这篇主题是不是变了啊 XDD 03/28 18:25
8F:推 kiwatami:请问darkk6大大是用哪种IDE开发啊? 要改什麽设定才可以在 03/29 22:04
9F:→ kiwatami:console同时显示big5跟utf-8的文字? 03/29 22:06
10F:→ darkk6:并没有同时显示 UTF8 和 Big5 阿 @@ 我哪里有说XDDDD 03/30 08:52
11F:推 kiwatami:我没有质疑你的意思啦XD 只是最近我也在搞编码 03/30 10:14
12F:推 kiwatami:非utf-8都会显示成乱码 很难debug 03/30 10:18
13F:→ darkk6:我知道啦XD 是想说我没提到我在IDE有用两种编码 XD 03/30 15:35







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:e-shopping站内搜寻

TOP