作者liu2007 (薯)
看板Programming
标题[问题] 碰到魔幻的文字显示bug....
时间Tue Nov 9 11:19:55 2021
我的电脑上有这麽一个档案,名字叫做
[しまじ] 声が変わる前に。君を、 <------网路上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://webptt.com/cn.aspx?n=bbs/Programming/M.1636427998.A.787.html
1F:推 LPH66: 应该是来源字串已经是 NFD 分解过的字了 49.159.72.196 11/09 13:38
2F:→ LPH66: じ (U+3058) 经过 NFD 会拆开成し (U+3057) 49.159.72.196 11/09 13:39
3F:→ LPH66: 和组合用浊点 U+3099, 会显示不正常的就是 49.159.72.196 11/09 13:40
4F:→ LPH66: 这个组合用浊点没有正确处理 49.159.72.196 11/09 13:40
5F:→ LPH66: 後者跟单独打的浊点 ゛(U+309B) 是不一样的 49.159.72.196 11/09 13:41
6F:推 LPH66: 至於你写的程式的问题就要看你是用什麽方式 49.159.72.196 11/09 13:44
7F:→ LPH66: 去读档名; 会发生消失的状况应该不是直接 49.159.72.196 11/09 13:44
8F:→ LPH66: 向系统读 Unicode 档名的那种 49.159.72.196 11/09 13:45
9F:→ LPH66: 这会让系统先帮你转成地区编码(big5 等)後 49.159.72.196 11/09 13:46
10F:→ LPH66: 才回传给你, 但 U+3099 没有对应码就吃掉了 49.159.72.196 11/09 13:47
感谢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
11F:推 LPH66: 啊, QT 的话那 QString 有支援分解组合 49.159.72.196 11/09 15:03
12F:→ LPH66: 呼叫 normalized 函数并指令 NFC 型式 49.159.72.196 11/09 15:03
13F:→ LPH66: (NormalizationForm_C ←这个参数) 49.159.72.196 11/09 15:03
14F:→ LPH66: 就能帮你组起来了 49.159.72.196 11/09 15:04
15F:→ LPH66: 上三楼 指令→指定 49.159.72.196 11/09 15:05
16F:→ LPH66: 不然一般来说这种分解组合需要有函式库帮忙 49.159.72.196 11/09 15:07
17F:→ LPH66: 这样看起来似乎做拆解的可能是 QT 49.159.72.196 11/09 15:08
18F:→ LPH66: 主要因为就我所知 Windows 很少做自动拆组 49.159.72.196 11/09 15:28
19F:→ LPH66: (Windows 也有他自己的一套函数可以做就是) 49.159.72.196 11/09 15:28
20F:→ LPH66: 反而比较常听到 Apple 很常帮拆 49.159.72.196 11/09 15:28
21F:→ LPH66: 但你这里的使用情境显然是 Windows... 49.159.72.196 11/09 15:28
没错,就是这个normalized,刚刚也是找到这个解
感谢L大的细心的指点
我想我下载的档案应该是来自MacOS分享的档案
然後Win7的系统、chrome、网站、Sublime Text都有做处理
但就是我的程式和win7内建的笔记本以及ptt没做处理,所以才会产生错误吧?
总之非常感谢
本来以为这个问题不会有人回答XDDD
※ 编辑: liu2007 (123.192.225.144 台湾), 11/09/2021 15:40:56