Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:如何将UTF-8(文字)转换为unicode_Java_Encoding_Encode_Unicode Literals - Fatal编程技术网

Java:如何将UTF-8(文字)转换为unicode

Java:如何将UTF-8(文字)转换为unicode,java,encoding,encode,unicode-literals,Java,Encoding,Encode,Unicode Literals,我有一个UTF-8(字面意思)像这样“\xE2\x80\x93。” 我正在尝试使用Java将其转换为Unicode 但我没能找到一个方法来转换这个 有人能帮我吗 问候,, 坐 打印一个em破折号,这是这三个字节的编码。你的问题不清楚你是否有这样的三个字节,或者你发布的字符串。如果您有字符串,则只需事先将其解析为字节,例如使用以下命令: final String[] bstrs = "\\xE2\\x80\\x93".split("\\\\x"); final byte[] bytes = new

我有一个UTF-8(字面意思)像这样“\xE2\x80\x93。”

我正在尝试使用Java将其转换为Unicode

但我没能找到一个方法来转换这个

有人能帮我吗

问候,, 坐

打印一个em破折号,这是这三个字节的编码。你的问题不清楚你是否有这样的三个字节,或者你发布的字符串。如果您有字符串,则只需事先将其解析为字节,例如使用以下命令:

final String[] bstrs = "\\xE2\\x80\\x93".split("\\\\x");
final byte[] bytes = new byte[bstrs.length-1];
for (int i = 1; i < bstrs.length; i++)
  bytes[i] = (byte) ((Integer.parseInt(bstrs[i], 16) << 24) >> 24);
System.out.println(new String(bytes, "UTF-8"));
final String[]bstrs=“\\xE2\\x80\\x93”.split(\\\\x”);
最终字节[]字节=新字节[bstrs.length-1];
对于(int i=1;i24);
System.out.println(新字符串(字节,“UTF-8”);

您可以使用Apache Commons语言

或者,如果您知道字符串始终为\xHH\xHH,则可以:

String hex = input.replace("\x", "");
byte[] bytes = hexStringToByteArray(hex);
String result = new String(bytes, "utf-8");
hexStringToByteArray


另一种情况也是如此。

您必须将字符串解析为
char[]
,然后将其转换为所需的
String
。String的构造函数是您问题的答案。如果需要,还需要提供字符集名称。不清楚您的输入是什么。类似于
String input=“\xE2\x80\x93”;
”\xE2\x80\x93。"
在Java中不是有效的字符串文字。Java中的所有字符串文字都是UTF-16。您能更明确地说明数据来源吗?Marko给出的解决方案对我有效。谢谢Marko。@Sat您知道接受答案吗?这是您在StackOverflow上应该做的,而不是留下描述性注释。您只需要ed单击答案左侧的复选标记。为什么有一个
>24
?@berylium在降到
字节之前是关于符号扩展的@Marko我有一个这样的字符串,其中包含UTF-8值。“我们庆祝这个想法\xE2\x80\x93”我们正在使用hadoop hbase表来存储数据,当数据存储到hbase表中时,它将以这种格式\xE2\x80\x93存储。当我们尝试使用StringEscapeUtils和其他一些实用程序将其转换为Unicode时……没有任何帮助。您是否尝试过我的其他建议,手动将\xHH转换为bytearray,然后解码?@Marko我有一个像这样的环包含UTF-8值。“我们庆祝idea\xE2\x80\x93”。如果我的字符串包含“我们庆祝idea\xE2\x80\x93s”,我使用正则表达式将其替换为0x。因此它看起来像“我们庆祝idea0xE20x80x93s”。是否有办法解析此数据并仅获取十六进制值?
String hex = input.replace("\x", "");
byte[] bytes = hexStringToByteArray(hex);
String result = new String(bytes, "utf-8");