如何在Java中将十六进制字节转换为Unicode

如何在Java中将十六进制字节转换为Unicode,java,unicode,hex,Java,Unicode,Hex,我想把十六进制字节转换成Unicode。我在Windows-1250中有十六进制0x80,我想转换成'\u0402'。是否可以使用不带开关的标准方法。\u0402命名为西里尔字母大写字母DJE。我猜,您有一些不同的CP1251字符编码的文本,其中0x80映射到同一西里尔字母 尝试识别当前文本(字节)的编码并使用 将字节读入字符串。之后,您可以使用正确的编码再次将字符串转换为字节 进一步阅读 (\u0402被命名为西里尔字母大写字母DJE。我想,您有一些不同的CP1251字符编码的文本,其中0

我想把十六进制字节转换成Unicode。我在Windows-1250中有十六进制
0x80
,我想转换成
'\u0402'
。是否可以使用不带开关的标准方法。

\u0402
命名为
西里尔字母大写字母DJE
。我猜,您有一些不同的CP1251字符编码的文本,其中
0x80
映射到同一西里尔字母

尝试识别当前文本(字节)的编码并使用

将字节读入字符串。之后,您可以使用正确的编码再次将字符串转换为字节

进一步阅读


  • \u0402
    被命名为
    西里尔字母大写字母DJE
    。我想,您有一些不同的CP1251字符编码的文本,其中
    0x80
    映射到同一西里尔字母

    尝试识别当前文本(字节)的编码并使用

    将字节读入字符串。之后,可以使用正确的编码再次将字符串转换为字节

    进一步阅读


    • (让我们澄清一下:您在CP1250中有一些字节,并且您知道编码。您希望将它们以字符串的形式发送到某个系统,这些字符以
      \uxxx
      的形式转义,或者以UTF-16的字节形式转义

      首先,Andreas_D给出了以下建议:
      newstring(bytes,“CP1250”)
      将把字节转换成java字符串

      现在要在utf-16中有一个字节数组,请使用
      newstring(bytes,“CP1250”).getBytes(“utf-16”);


      要将此字符串作为转义unicode字符的ASCII字符串,请使用示例:您在CP1250中有一些字节,并且您知道编码。您希望将它们以字符串的形式发送到某个系统,这些字符转义形式为
      \uxxx
      ,或以UTF-16中的字节

      首先,Andreas_D给出了以下建议:
      newstring(bytes,“CP1250”)
      将把字节转换成java字符串

      现在要在utf-16中有一个字节数组,请使用
      newstring(bytes,“CP1250”).getBytes(“utf-16”);


      要将此字符串作为转义unicode字符的ASCII字符串获取,请使用示例

      您需要字符/u0402,或者您需要值为“/u0402”的实际字符串?我想编写一种方法,将所有大于0x80的十六进制数转换为字符,直到0xFF。所用转换技术中的问题非常模糊。0x80恰好是扩展ASCII和Unicode中的控制字符,无法直接映射到\u0402(西里尔文字符集中的字符)除非指定了明确的编码规则(实际情况并非如此)。如果字节值
      \0x80
      显示为
      Ђ
      ,则使用CP-1251。在CP-1250中,它是
      。您需要字符/u0402,或者需要实际字符串的值为“/u0402”?我想编写一种方法,将所有大于0x80的十六进制数转换为字符,直到0xFF。所用转换技术中的问题非常模糊。0x80恰好是扩展ASCII和Unicode中的控制字符,无法直接映射到\u0402(西里尔文字符集中的字符)除非指定了显式编码规则(事实并非如此)。如果您的字节值
      \0x80
      显示为
      Ђ
      ,则您使用CP-1251。在CP-1250中,它是
      。我使用Cp1250,并且我有正确的字符编码。我想将DJE发送到嵌入式系统。我不知道这一点最初被否决的原因,但如果将此处和中的建议考虑在内,Cp1250中的0x80可以被传输按照Andreas的建议,使用中间UTF-16编码,在UTF-8/16(或另一种Unicode编码)中被设置为0x0402。@cp1250中的Gogoo-
      0x80
      是欧元货币字符(
      \u20AC
      ),至少根据。从你的问题:你有cp1251I使用Cp1250,我有正确的字符编码。我想发送给嵌入式系统。我不知道为什么这一点最初被否决,但如果这里和中的建议被考虑在内,Cp1250中的0x80可以翻译成UTF-8/16(或另一种Unicode编码)中的0x0402通过使用Andreas建议的中间UTF-16编码。@cp1250中的Gogoo-
      0x80
      是欧元货币字符(
      \u20AC
      ),至少根据。根据您的问题:您有cp1251I,我的数字从1到99。我必须将此数字发送到系统,如0x81..11A(1=0x81,2=0x82….99=11A).但在我发送到系统之前,我有一个方法可以将字符串参数转换为十六进制字节。所有参数都用cp1250编码,只有这个数字。首先我得到int 1,2,3,4,5…99,然后我转换成适当的字符,我的方法将知道如何从0x81以上转换为十六进制。我有一个从1到99的数字t将此号码发送到系统,如0x81..直到..11A(1=0x81,2=0x82….99=11A).但在我发送到系统之前,我有一个方法可以将字符串参数转换为十六进制字节。所有参数都用cp1250编码,只有这个数字。首先,我得到int 1,2,3,4,5…99,我将其转换为适当的字符,我的方法将知道如何从0x81以上转换为十六进制。
      String s = new String(myBytes, "Cp1251");