我试图得到一些旧代码以正确显示中国文字。一个字符编码我试图用一个0x7F的开始工作,并为4个字节长(包括0x7F的字节)。有谁知道这是什么样的编码,并在那里我可以找到它的信息?感谢..

更新: 我也有与同0xE3开始的每一个字符,是三个字节长一些日文编码工作。它显示我的电脑上,如果正确,我选择在Windows日语语言环境,但是,它并没有在我们的应用程序正常显示。但是,如果选择了日语以外的其他语言环境,我甚至无法正常查看文件名。所以我猜这个编码是不是Unicode。有人知道这是什么吗?难道ANSI?是它移位JIS?

有关的中国一个中,我使用Unicode和UTF-8字符和我发现了相同的模式进行了测试; 0x7F的后面3个字节。是Unicode和UTF-8一样的吗?

有帮助吗?

解决方案

  

一个字符编码我试图与具有0x7F的开始工作并且是4个字节长

哪些其它字节?你有这个编码任何拉丁文字?

如果它的“0x7F的0X ... 0×00 0×00”你在看UTF-32LE。它也可以是两个UTF-16(无论是LE或BE)字符。

大多数东亚编码使用0x80-0xFF作为非ASCII字符的前导字节;有没有我知道的,将使用前导0x7F的其他不是ASCII删除任何东西。

ETA:

  

是否有应该是字节顺序标记?

有不如果有信令,编码是“UTF-32LE”(可能一个它得到你之前丢失)的出带外方式需要一个BOM。

  

我也有与同0xE3开始的每一个字符,是三个字节长一些日文编码工作。

这是肯定UTF-8。序列0xE3 0X ... ... 0X将导致U + 3000和U + 4000之间的字符,这是在平假名/片假名活

  

这显示在我的电脑上,如果正确,我选择在Windows日语语言环境,但是,它并没有在我们的应用程序正常显示。

然后机会是你的应用程序是是非Unicode兼容的应用程序的令人遗憾定住之一,仍然使用“A”的“W'-后缀那些的内部在Win32接口(*)的版本。是否可以在字符串中根据其实际的编码是没有实际意义阅读:非Unicode兼容的应用程序将永远无法在西方的语言环境显示东亚象形文字

(。*:命名为“ANSI”,它是Windows的“任何系统代码页的时刻设置为”误导性的术语,就是为什么改变你的区域设置的影响吧)

ETA(2):

行,解决了。这不是任何标准化的编码我以前见过,但如果你假设的前提是Unicode码点被编码它是比较容易破译。

0x00-0x7E: plain ASCII
0x7F A B C: Unicode character

在一个Unicode转义编码的字符可以通过将索引中A,B和C的一个密钥串,并相加来计算:

A*0x1000 + B*0x40 + C

也就是说,它是一个基本64的字符集,但它不是通常的Base64标准。一个小的实验给出的一个密钥串:

.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz

在“”和“_”字符是猜测,因为没有你贴的字符使用它们。我们会需要更多的数据来找出确切的字符串。

因此,例如:

0x7F 3 u g
A=4 B=58 C=44
4*0x1000 + 58*0x40 + 44 = 0x4EAC
U+4EAC = 京

ETA(3):

是的,这应该是很容易地创建通过手动吸出的每个代码点与接合作为字符天然Unicode字符串。不太清楚什么是可在你使用什么平台,但任何支持Unicode的平台应该能够使从码点串简单(希望无需手动重新编码成UTF-16LE字节)。

我想它必须通过注意到三个示例字符已经逃避第一字符在相同的一般范围是Unicode码点,并以相同的数字顺序作为其Unicode代码点。其他两个字符似乎随机地改变,所以这是该代码点的很可能大端编码,并且可能是一个基64编码为6是一样多的位就可以得到出可读的ASCII的。

标准Base64编码本身开头字母,这将使事情开始与一些过于靠上是在基本多文种平面。于是我开始用“0123456789ABCDEFG ......”这将是关键字符串的其他显而易见的选择的猜测。这引起了导致那名接近给定的字符码点号,但有点太低了。在关键字符串的开头插入一个多余的字符(数字如此“0”不映射到数字0)得到了正确的字符和另外两个非常接近的一个;在一个是正确的没有小写字母,所以只能改变小写字母I插入上和下壳之间的另一字符。这想出了正确的数字。

它不能保证,这实际上是正确的,但(除插入的字符中的任意的选择)它很可能是它。

其他提示

您可能想看看中国字符编码维基百科页面。在那里,我可以看到,唯一的编码总是4个字节是 UTF-32

GB 18030 是当前标准中国字符集,但它可以是1至4个字节长。

尝试 chardet的。它确实猜测字节串的字符编码的一个很好的工作。

  

是Unicode和UTF-8相同的?

没有。 UTF-8仅仅是一个表示Unicode字符作为字节序列的方式。 Unicode是完整的标准,分配数字和人类可读的标识符到每个字符,以及大量的关于字符的元数据。

它可能是一个有效的Unicode编码,例如UTF-8或UTF-16代理对

是,中国一个是Unicode的UTF-8,一个实现(编码)。 的UTF-8是1个字节长为ASCII字符和至多4个字节为他人。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top