iT邦幫忙

0

想問一下 有什麼網路工具 可以 丟一串中文字判斷他是 UTF8 還是 BIG 5 編碼

  • 分享至 

  • xImage

想問一下 有什麼網路工具 可以 丟一串中文字判斷他是 UTF8 還是 BIG 5 編碼

淺水員 iT邦大師 6 級 ‧ 2021-12-29 13:55:20 檢舉
是直接上傳檔案判斷還是複製貼上?
如果是複製貼上正常文字的應該無法
複製貼上亂碼的不確定
可以參考一下這篇 https://blog.darkthread.net/blog/detect-big5-encoding

沒有任何簡單的方式可以判斷編碼
丟一串中文字判斷他是 UTF8 還是 BIG 5 編碼 => 不行
只能拋 文字檔案判定,而文字檔案判定更簡單,用 UTF 存的幾乎鐵定就是 UTF
ANSI 才會有 BIG5 或其他編碼的問題
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
2
mathewkl
iT邦高手 1 級 ‧ 2021-12-29 14:33:19
最佳解答

在儲存成檔案前都是薛丁格的編碼

你開記事本輸入任意字串
然後儲存時在編碼選擇ANSI,這字串就是ANSI編碼;選擇UTF,這字串就是UTF編碼
只能從儲存檔案的編碼格式去看

找到一個列出檔案格式的範例提供給你參考
https://stackoverflow.com/a/34766140

薛丁格→代表理論為未知未定XD...

大家都知道 遇事不決量子學

2
ali88
iT邦新手 3 級 ‧ 2021-12-29 14:51:43

在 Unix-like OS : Linux , OSX 都有 file 指令 可以檢查檔案屬性。可以參考以下 Linux 查詢、轉換 Big5、UTF8 檔案編碼教學與範例

3

網路工具嘛~~~沒有。

不過我以前有用個一個PHP程式碼做簡單的判斷。
那是為了混碼資料庫寫的。

基本是運用了

strlen()
mb_strlen()

這兩個來判斷。
基本上兩者長度相同。就有可能沒有中文字或無法判斷。
當然我還有多做英數符號判斷。如果有其它字碼就會列為「無法判別編碼」

那時我只針對BIG5跟UTF8做處理判斷。(因為資料欄位裏就混用這些編碼。搞死我了)

程式碼我現在找不到了,只是大約的原理跟你說。
倒也不困難就是了。
而且我這招在同一個字串混用多個編碼(基本上因不可能)
也是會掛。

1
Gary
iT邦好手 1 級 ‧ 2021-12-30 14:01:24

偵測檔案使用的編碼是Utf-8或Big5方法參考

//偵測byte[]是否為BIG5編碼
public static bool IsBig5Encoding(byte[] bytes) {
    Encoding big5 = Encoding.GetEncoding(950);
    //將byte[]轉為string再轉回byte[]看位元數是否有變
    return bytes.Length ==
        big5.GetByteCount(big5.GetString(bytes));
}
//偵測檔案否為BIG5編碼
public static bool IsBig5Encoding(string file) {
    if (!File.Exists(file)) return false;
    return IsBig5Encoding(File.ReadAllBytes(file));
}

https://eric0806.blogspot.com/2014/07/detect-big5-or-utf8-encoding.html

謝謝回答 東西很棒 感謝

我要發表回答

立即登入回答