【发布时间】:2015-06-26 15:33:02
【问题描述】:
过了很久,我来查看我的硬盘内容,看到一个奇怪的文件名。
我不确定是什么工具或程序以这种方式改变了它,但是当我看到文件的内容时,我可以找到它的原始名称。
无论如何,我遇到了一种编码类型,我想找到它。这并不复杂。主要针对那些熟悉 unicode 和 utf8 的人。现在我映射它们,你猜发生了什么。
在下面,我给出了一个映射字符的表。在第二列中,有 utf8 形式,在第一列中,有它的等效字符被转换。
我需要知道发生了什么以及如何将其转换回 utf8。也就是我拥有的在第一列,我需要得到的在第二列:
隐藏复制代码
638 2020 646
639 AF 6AF
637 A7 627
637 B1 631
637 B3 633
637 6BE 62A
20 20
638 67E 641
63A 152 6CC
更多描述,考虑第一行,utf8形式是46 06(类型字节)或0x0646。该字符的文件名转换为两个宽字符,0x0638 0x2020。
【问题讨论】:
-
奇怪的文件名通常是文件系统错误的产物。
-
您使用的是哪个操作系统?
-
哦不!我确定这不是因为文件系统错误。它是 Windows 7 上的 NTFS。可能是有用的实用程序文件加密导致它,因为它不支持非西方文件名(只是猜测)。我的意思是这个实用程序:file-encryption.net
-
你的表没有意义。
46 06不是有效的 UTF-8 字节序列。此外,NTFS 无论如何也不使用 UTF-8,它使用 UTF-16。所以请澄清你真正拥有什么,以及你真正期待什么。也许使用实际的屏幕截图而不是手写表格。否则,很难弄清楚你在说什么。 -
恰好 "نگارستان نفیس" 被转换为 "ظ†ع¯ط§ط±ط³طھط§ظ† ظ†ظپغŒط³" 源字节序列:638 2020 639 AF 637 A7 637 B1 637 B3 637 6 A7 638 2020 20 638 2020 638 67E 63A 152 637 B3 2E 68 74 6D 目的地(我所期望的)字节序列:646 6AF 627 631 633 62A 627 646 20 646 641 6CC 633 也许不是 utf8。也许它是 unicode ......是的,你是对的。我把这个字节序列放在一个文件中:FF FE 46 06 AF 06 27 06 31 06 33 06 2A 06 27 06 46 06 20 00 46 06 41 06 CC 06 33 06 当我在记事本++中打开它时,我看到了我的期望。编码是UCS-2 little endian。是 unicode 还是 utf16 的别称?