Encoding 哪个多字节字符集以0x7F开头,长度为4字节?

Encoding 哪个多字节字符集以0x7F开头,长度为4字节?,encoding,mbcs,Encoding,Mbcs,我正在尝试使用一些遗留代码来正确显示汉字。我尝试使用的一个字符编码以0x7F开头,长度为4字节(包括0x7F字节)。有人知道这是什么类型的编码吗?我在哪里可以找到它的信息?谢谢 更新: 我还必须使用一些日语编码,每个字符都以0xE3开头,长度为三个字节。如果我在Windows中选择日语区域设置,它将正确显示在我的计算机上,但是,它在我们的应用程序中不会正确显示。但是,如果选择了日语以外的任何其他语言环境,我甚至无法正确查看文件名。所以我猜这种编码不是Unicode。有人知道是什么吗?是ANSI吗

我正在尝试使用一些遗留代码来正确显示汉字。我尝试使用的一个字符编码以0x7F开头,长度为4字节(包括0x7F字节)。有人知道这是什么类型的编码吗?我在哪里可以找到它的信息?谢谢

更新: 我还必须使用一些日语编码,每个字符都以0xE3开头,长度为三个字节。如果我在Windows中选择日语区域设置,它将正确显示在我的计算机上,但是,它在我们的应用程序中不会正确显示。但是,如果选择了日语以外的任何其他语言环境,我甚至无法正确查看文件名。所以我猜这种编码不是Unicode。有人知道是什么吗?是ANSI吗?这是日班吗


对于中文版,我用Unicode和UTF-8字符对它进行了测试,得到了相同的模式;0x7F后跟三个字节。Unicode和UTF-8是否相同

它可能是有效的unicode编码,如utf-8或UTF16代理项对。

它可能是有效的unicode编码,如utf-8或UTF16代理项对。

您可能想查看维基百科上的页面。我能看到的唯一编码总是4个字节是

是当前的标准汉字集,但长度可以为1到4字节。

您可能需要查看维基百科上的页面。我能看到的唯一编码总是4个字节是

是当前的标准汉字集,但长度可以为1到4字节

我尝试使用的一个字符编码以0x7F开头,长度为4字节

其他字节是什么?你有这种编码的拉丁文字吗

如果它是“0x7f0x…0x000x00”,您将看到UTF-32LE。它也可以是两个UTF-16(LE或be)字符

大多数东亚编码使用0x80-0xFF作为非ASCII字符的前导字节;据我所知,除了ASCII删除之外,没有一个会将前导0x7F用作任何东西

预计到达时间:

应该有字节顺序标记吗

如果有一种带外方式来表示编码为“UTF-32LE”(可能在到达之前丢失),则不需要BOM

我还必须使用一些日语编码,每个字符都以0xE3开头,长度为三个字节

那肯定是UTF-8。序列0xE3 0x。。。0x。。。将产生一个介于U+3000和U+4000之间的角色,这是平假名/片假名所在的位置

如果我在Windows中选择日语区域设置,它将正确显示在我的计算机上,但是,它在我们的应用程序中不会正确显示

很有可能你的应用程序是一大群不符合Unicode标准的应用程序中的一个,仍然在后缀为“W”的应用程序中使用Win32接口的“A”(*)版本。你是否能根据字符串的真实编码来读取字符串还没有定论:一个不符合Unicode标准的应用程序永远无法在西方地区显示东亚表意文字

(*:以“ANSI”命名,这是Windows误导性的术语,表示“无论系统代码页当前设置为什么”。这就是更改区域设置会影响它的原因。)

预计到达时间(2):

好吧,破解它。这不是我以前遇到过的任何标准化编码,但是如果假设Unicode编码点正在被编码,那么它相对容易破译

0x00-0x7E: plain ASCII
0x7F A B C: Unicode character
在Unicode转义码中编码的字符可以通过获取a、B和C键字符串中的索引并相加来计算:

A*0x1000 + B*0x40 + C
也就是说,它是一个base-64字符集,但不是通常的Base64标准。通过一点实验,可以得出以下关键信息:

.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz
“.”和“u”字符是猜测,因为您发布的所有字符都没有使用它们。我们需要更多的数据来找出确切的字符串

例如:

0x7F 3 u g
A=4 B=58 C=44
4*0x1000 + 58*0x40 + 44 = 0x4EAC
U+4EAC = 京
预计到达时间(3):

是的,创建一个本地Unicode字符串应该很容易,方法是手动抽出每个代码点并作为一个字符连接。不太确定在您使用的任何平台上都可以使用什么,但任何支持Unicode的平台都应该能够简单地从代码点生成字符串(希望不必手动重新编码为UTF-16LE字节)

我注意到这三个示例字符的第一个转义字符的一般范围相同,并且与它们的Unicode代码点的数字顺序相同,因此我认为这一定是Unicode代码点。其他两个字符似乎是随机变化的,因此很可能是代码点的大端编码,可能是base-64编码,因为6是可读ASCII中的尽可能多的位

标准Base64本身以字母开头,这将使以数字开头的内容在基本的多语言平面中太远。所以我开始猜测“0123456789ABCDEFG…”,这将是另一个明显的键字符串选择。结果得到的数字接近给定字符的代码点,但有点太低。在密钥字符串的开头插入一个额外的字符(因此数字“0”不会映射到数字0)使其中一个字符正确,而另两个字符非常接近;正确的那一个没有小写字母,所以为了只改变小写字母,我在大写和小写之间插入了另一个字符。这是正确的数字

不能保证这是正确的,但是(除了任意选择插入字符之外)很可能是正确的

我尝试使用的一个字符编码以0x7F开头,长度为4字节

其他字节是什么?你有这种编码的拉丁文字吗

如果它是“0x7f0x…0x000x00”,您将看到UTF-32LE。它也可以是两个UTF-16(LE或be)字符

大多数东亚编码使用0x80-0xFF作为非ASCII字符的前导字节;没有