Ram*_*mon 3 java utf-8 windows-1252 utf8-decode
我从外部Microsoft SQL 2008数据库接收数据(我使用MyBatis进行查询).在理论上,我在"Windows-1252"上接收数据编码.
我用这段代码尝试解码数据:
String textoFormado = ...来自MyBatis的价值......;
String s = new String(textoFormado.getBytes("Windows-1252"),"UTF-8");
几乎所有String都被正确解码.但是有一些字母没有.
例如:
显然,textoFormado是一个类型的变量String.这意味着字节已经被解码.然后,Java在内部使用16位Unicode表示.你所做的是用Windows-1252编码你的字符串,然后用UTF-8编码读取结果字节.这不起作用.
你需要的是读取字节时的正确编码:
byte[] sourceBytes = getRawBytes();
String data = new String(sourceBytes , "Windows-1252");
Run Code Online (Sandbox Code Playgroud)
要在程序中使用此字符串,您无需执行任何操作.只需使用它.如果 - 但是 - 您想要将数据写回文件,例如,您需要再次编码:
byte[] destinationBytes = data.getBytes("UTF-8");
// write bytes to destination file here
Run Code Online (Sandbox Code Playgroud)
感谢大家,我解决了。
我有下一个项目结构:
起初我有 (MyBatis 和 Spring 注入依赖项和参数):
public class Pojo {
private String params;
public void setParams(String params) {
try {
this.params = params;
}
}
}
Run Code Online (Sandbox Code Playgroud)
解决方案:
public class Pojo {
private String params;
public void setParams(byte[] params) {
try {
this.params = new String(params, "UTF-8");
} catch (UnsupportedEncodingException e) {
this.params = null;
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
29833 次 |
| 最近记录: |