Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.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 redis中的字符编码/解码_Java_Unicode_Utf 8_Redis_Character Encoding - Fatal编程技术网

Java redis中的字符编码/解码

Java redis中的字符编码/解码,java,unicode,utf-8,redis,character-encoding,Java,Unicode,Utf 8,Redis,Character Encoding,我正在从Redis到Java程序中检索一些特殊字符,但这些字符没有正确编码/解码。这些字符从api访问,插入redis缓存,然后在java程序中使用 关于邮递员(REST客户端): [^!-~°-µ\\\\s±–—‐“”’¼-¾] [^!-~\xef\xbf\xbd\xef\xbf\xbd-\xef\xbf\xbd\xef\xbf\xbd\\\\\\\\s\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\x

我正在从Redis到Java程序中检索一些特殊字符,但这些字符没有正确编码/解码。这些字符从api访问,插入redis缓存,然后在java程序中使用

关于邮递员(REST客户端):

[^!-~°-µ\\\\s±–—‐“”’¼-¾]
[^!-~\xef\xbf\xbd\xef\xbf\xbd-\xef\xbf\xbd\xef\xbf\xbd\\\\\\\\s\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd-\xef\xbf\xbd\xef\xbf\xbd]
[^!-~��-��\s����������������������-��]
在Redis缓存控制台(Redis cli.exe)上:

[^!-~°-µ\\\\s±–—‐“”’¼-¾]
[^!-~\xef\xbf\xbd\xef\xbf\xbd-\xef\xbf\xbd\xef\xbf\xbd\\\\\\\\s\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd-\xef\xbf\xbd\xef\xbf\xbd]
[^!-~��-��\s����������������������-��]
在Java程序中:

[^!-~°-µ\\\\s±–—‐“”’¼-¾]
[^!-~\xef\xbf\xbd\xef\xbf\xbd-\xef\xbf\xbd\xef\xbf\xbd\\\\\\\\s\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd-\xef\xbf\xbd\xef\xbf\xbd]
[^!-~��-��\s����������������������-��]

不知道这里发生了什么!为什么这些字符被转换成xxx格式。任何人都请帮忙

我在windows机器上观察到与字符集相关的类似问题。使用
Charset.forName(“windows-1252”)
(如果不起作用,请检查所需的编码)处理此输入流的任何位置。

我在windows计算机上观察到与字符集相关的类似问题。使用
Charset.forName(“windows-1252”)
(如果这不起作用,请检查所需的编码)处理此输入流的任何位置。

我可以解释您看到的内容,但我无法解决此问题

°
是unicode字符度符号或U+00B0,在UTF-8中编码为
\xc2\xb0

μ
是unicode字符希腊小写字母MU或U+03BC,在UTF-8中编码为
\xce\xbc

是unicode字符替换字符或U+FFFD,在UTF-8中编码为
\xef\xbf\xbd

您的帖子表明,在Redis控制台和Java程序中,每个非ascii字符都被替换为两个替换字符(我不知道如何替换)。Java程序正确输出字符,而Redis控制台输出其UTF-8表示形式


我怀疑这些字符最初是在UTF-8中传递的,在0x7F上使用了2个字节。但当它被转换为Java 16位字符时,用于解码的字符集是纯ascii,所有字符都被转换为unicode替换字符。如果不清楚地解释确切的工作流程,我就无法多说。

我可以解释您看到的内容,但我无法解决问题

°
是unicode字符度符号或U+00B0,在UTF-8中编码为
\xc2\xb0

μ
是unicode字符希腊小写字母MU或U+03BC,在UTF-8中编码为
\xce\xbc

是unicode字符替换字符或U+FFFD,在UTF-8中编码为
\xef\xbf\xbd

您的帖子表明,在Redis控制台和Java程序中,每个非ascii字符都被替换为两个替换字符(我不知道如何替换)。Java程序正确输出字符,而Redis控制台输出其UTF-8表示形式


我怀疑这些字符最初是在UTF-8中传递的,在0x7F上使用了2个字节。但当它被转换为Java 16位字符时,用于解码的字符集是纯ascii,所有字符都被转换为unicode替换字符。如果没有对确切的工作流程的明确解释,我不能说更多。

我同意这远不是一个明确的答案,但对于注释+1的解释来说太长了。实际上,邮递员和redis之间还有一件事,那就是数据库。我首先将其作为blob存储在数据库中。当回到redis时,它被转换成了这种格式。非常感谢。我同意这远不是一个确定的答案,但对于注释+1的解释来说太长了。实际上,邮递员和redis之间还有一件事,那就是数据库。我首先将其作为blob存储在数据库中。当回到redis时,它被转换成了这种格式。非常感谢。这里没有文本,只有编码文本。阅读时必须使用与写作时相同的编码。在这个过程中的某个时刻,这并没有完成。继续向上游寻找文本字节和编码都已知的点。从那里返工。没有文本,只有编码文本。阅读时必须使用与写作时相同的编码。在这个过程中的某个时刻,这并没有完成。继续向上游寻找文本字节和编码都已知的点。从那里返工。