我想模仿Java
我可以用Notepad++
做的一件事。
TEXT_2 = convert(TEXT_1) // where: TEXT_2 = "Български", TEXT_1 = "БългарÑки"
如何使用Notepad ++
进行操作
设定起点......
打开Notepad++
并点击:Encoding / Encode in UTF-8
,然后粘贴TEXT_1
:
БългарÑки
获取TEXT_2
点击:Encoding / Convert to ANSI
,然后点击:Encoding / Encode in UTF-8
。完成。
如何使用Java
到目前为止,我有以下功能(部分工作):
public static String convert(String text) {
String output = new String(Charset.forName("Cp1252").encode(text).array(), Charset.forName("UTF8"));
return output;
}
System.out.println(convert("БългарÑки"));
通过这个功能,我得到了:
Българ�?ки // where correct is slightly different: Български
任何让它运作的想法?。
如果可能,您能提供在函数convert()
内部工作的代码吗?感谢。
答案 0 :(得分:0)
这是一个避免为每次转换执行Charset查找的解决方案:
import java.nio.charset.Charset;
private final Charset UTF8_CHARSET = Charset.forName("UTF-8");
String decodeUTF8(byte[] bytes) {
return new String(bytes, UTF8_CHARSET);
}
byte[] encodeUTF8(String string) {
return string.getBytes(UTF8_CHARSET);
}
第二种方法:
从String转换为byte []:
String s = "some text here";
byte[] b = s.getBytes("UTF-8");
从byte []转换为String:
byte[] b = {(byte) 99, (byte)97, (byte)116};
String s = new String(b, "US-ASCII");
当然,您应该使用正确的编码名称。我的例子使用了“US-ASCII”和“UTF-8”这两种最常见的编码。