【发布时间】:2021-09-14 12:23:13
【问题描述】:
我在 Javascript 中比较两个可能不同编码的文件名,希望找到匹配项:
- 一个文件名是实际文件名,来自未归档的 zip(使用 https://stuk.github.io/jszip/)
- 一个文件名是从 bplist 中提取的名称(iOS 存档格式未使用 https://github.com/joeferner/node-bplist-parser 存档)
分析
在 javascript 控制台中比较日志输出时,这些文件名看起来完全相同:
15 - Beschänkt und gsägnet - PLAYBACKVERSION.mp3
15 - Beschänkt und gsägnet - PLAYBACKVERSION.mp3
注意德语变音符号。
现在,当我将这些字符串复制并粘贴到 Notepad++ 并启用十六进制编辑器时,它看起来像这样:
- 在第一种情况下,A-Umlaut 使用 3(三)个字节编码
- 在第二种情况下,元音变音符号仅使用 2(两个)字节进行编码。
问题
如何安全地比较这两个字符串。 Javascript 中是否有一个通用的“unencode”方法可以处理这些实例? 或者我应该/必须猜测每个编码,然后明确比较?
注意
- 我特意要求用 javascript 解决方案
- 这个问题,Compare strings with different encodings 虽然类似,但实际上与编码无关
【问题讨论】:
标签: javascript encoding string-comparison