[問題] 碰到文字顯示bug....

看板Programming作者 (薯)時間3年前 (2021/11/09 11:19), 3年前編輯推噓3(3018)
留言21則, 1人參與, 3年前最新討論串1/1
我的電腦上有這麼一個檔案,名字叫做 [しまじ] 声が変わる前に。君を、 <------網路上copy下來的文字 https://imgur.com/CRUIpc5
<------電腦資料夾裡顯示的文字 可以看到我從網路上copy下來的文字是正確的,電腦資料夾呈現的也是正確的 但是當我寫了一個程式去讀取檔案名稱的時候 https://imgur.com/osCDu59
https://imgur.com/PD3BisW
如紅色圈起來的地方所示,濁音的符號不見了 我想一定是我程式寫錯了 但是我複製資料夾上的名稱,也就是這張圖 https://imgur.com/CRUIpc5
然後再貼到筆記本裡面,卻顯示出 https://imgur.com/QlM3y5Z
而直接貼到ptt,會變成下面這個有點亂碼的情況 [しまし 声か饒vる前に。君を、 [Chinese] [篆儀通文書坊漢化] 我複製筆記本裡的文字用瀏覽器上網站使用網頁搜尋功能 卻又正常 https://imgur.com/QlM3y5Z
https://imgur.com/diHNdnx
https://imgur.com/F2ZUV6K
同樣我複製筆記本裡的文字,貼到我電腦裡另外一個程式Sublime Text 卻也正常 https://imgur.com/QlM3y5Z
https://imgur.com/1GvVXpr
想請問為什麼會有這樣奇怪的現象.... -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.192.225.144 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Programming/M.1636427998.A.787.html

11/09 13:38, 3年前 , 1F
應該是來源字串已經是 NFD 分解過的字了
11/09 13:38, 1F

11/09 13:39, 3年前 , 2F
じ (U+3058) 經過 NFD 會拆開成し (U+3057)
11/09 13:39, 2F

11/09 13:40, 3年前 , 3F
和組合用濁點 U+3099, 會顯示不正常的就是
11/09 13:40, 3F

11/09 13:40, 3年前 , 4F
這個組合用濁點沒有正確處理
11/09 13:40, 4F

11/09 13:41, 3年前 , 5F
後者跟單獨打的濁點 ゛(U+309B) 是不一樣的
11/09 13:41, 5F

11/09 13:44, 3年前 , 6F
至於你寫的程式的問題就要看你是用什麼方式
11/09 13:44, 6F

11/09 13:44, 3年前 , 7F
去讀檔名; 會發生消失的狀況應該不是直接
11/09 13:44, 7F

11/09 13:45, 3年前 , 8F
向系統讀 Unicode 檔名的那種
11/09 13:45, 8F

11/09 13:46, 3年前 , 9F
這會讓系統先幫你轉成地區編碼(big5 等)後
11/09 13:46, 9F

11/09 13:47, 3年前 , 10F
才回傳給你, 但 U+3099 沒有對應碼就吃掉了
11/09 13:47, 10F
感謝L大回復,我研究一下 ※ 編輯: liu2007 (123.192.225.144 臺灣), 11/09/2021 14:18:14 程式的部分我是用QT寫的 讀取檔名其實也沒有什麼特別的操作 純粹就是 QFileInfo target{"F:\檔案A"} target.fileName(); 如此而已 我沒想到在日文上會有拆解的問題 ※ 編輯: liu2007 (123.192.225.144 臺灣), 11/09/2021 14:36:58

11/09 15:03, 3年前 , 11F
啊, QT 的話那 QString 有支援分解組合
11/09 15:03, 11F

11/09 15:03, 3年前 , 12F
呼叫 normalized 函數並指令 NFC 型式
11/09 15:03, 12F

11/09 15:03, 3年前 , 13F
(NormalizationForm_C ←這個參數)
11/09 15:03, 13F

11/09 15:04, 3年前 , 14F
就能幫你組起來了
11/09 15:04, 14F

11/09 15:05, 3年前 , 15F
上三樓 指令→指定
11/09 15:05, 15F

11/09 15:07, 3年前 , 16F
不然一般來說這種分解組合需要有函式庫幫忙
11/09 15:07, 16F

11/09 15:08, 3年前 , 17F
這樣看起來似乎做拆解的可能是 QT
11/09 15:08, 17F

11/09 15:28, 3年前 , 18F
主要因為就我所知 Windows 很少做自動拆組
11/09 15:28, 18F

11/09 15:28, 3年前 , 19F
(Windows 也有他自己的一套函數可以做就是)
11/09 15:28, 19F

11/09 15:28, 3年前 , 20F
反而比較常聽到 Apple 很常幫拆
11/09 15:28, 20F

11/09 15:28, 3年前 , 21F
但你這裡的使用情境顯然是 Windows...
11/09 15:28, 21F
沒錯,就是這個normalized,剛剛也是找到這個解 感謝L大的細心的指點 我想我下載的檔案應該是來自MacOS分享的檔案 然後Win7的系統、chrome、網站、Sublime Text都有做處理 但就是我的程式和win7內建的筆記本以及ptt沒做處理,所以才會產生錯誤吧? 總之非常感謝 本來以為這個問題不會有人回答XDDD ※ 編輯: liu2007 (123.192.225.144 臺灣), 11/09/2021 15:40:56
文章代碼(AID): #1XYUZUU7 (Programming)
文章代碼(AID): #1XYUZUU7 (Programming)