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/m.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燈, 水草

請輸入看板名稱,例如:iOS站內搜尋

TOP