java - 无法使用 Java 解码西里尔文字

标签 java encoding utf-8 text-decoding

我有以下文字:

Анна Меркулова

借助以下在线解码器 https://2cyr.com/decode/?lang=en我能够将提到的字符串解码为正确的字符串:

Анна Меркулова

enter image description here

源编码为UTF-8,目标编码为WINDOWS-1251

但我仍然无法在 Java 中以编程方式执行此操作:

String utf8String = new String("Анна Меркулова".getBytes(), "UTF-8");
String ansiString = new String(utf8String.getBytes("UTF-8"), "windows-1251");
System.out.println(ansiString);

返回

Анна Меркулова

我做错了什么以及如何正确转换字符串?

最佳答案

您正在尝试为 String(s) 分配一个 Charset,但您真正需要做的是提取 bytes 具有特定的 Charset

final byte[] bytes = "Анна Меркулова".getBytes("UTF-8");
final String utf8String = new String(bytes);
final byte[] bytes1 = utf8String.getBytes("windows-1251");
final String ansiString = new String(bytes1);

顺便说一句,你不需要所有这些

final byte[] bytes = "Анна Меркулова".getBytes("windows-1251");
final String result = new String(bytes);

关于java - 无法使用 Java 解码西里尔文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54966943/

相关文章:

go - 如何转换图像以上传 Spotify 个人资料图片?

java - Android 中的 Consumer-rules.pro 和 proguard-rules.pro 有什么区别?

Java Applet 初始化方法

java - Singleton 类引发 ClassCastException

CSS 自定义字体不工作

JavaScript 强制 UTF-8 编码

java - XML 公共(public)标识符中无法识别波浪号

javascript - Java UTF-8 特殊字符转 JavaScript

java - Eclipse 中特殊属性的编码

java stream - 带有方法引用的平面图