当前位置: 首页 > 面试题库 >

Java将Windows-1252转换为UTF-8,有些字母错误

上官联
2023-03-14
问题内容

我从外部Microsoft SQL 2008数据库接收数据(我通过My​​Batis进行查询)。在理论中,我在“ Windows-1252”上接收数据编码。

我尝试使用以下代码解码数据:

字符串textoFormado = …来自MyBatis的值…;

String s = new String(textoFormado.getBytes(“ Windows-1252”),“ UTF-8”);

几乎所有的字符串都正确解码。但是有些带有音符的字母却没有。

例如:

  1. 我从数据库收到以下字符串:“Ãvila”
  2. 我使用上面的代码,这使它成为字符串:“ …?vila”
  3. 我期望这个字符串:“Ávila”

问题答案:

我解决了所有的问题。

我有下一个 项目结构

  • MyBatisQueries:我有一个带有“选择”的查询,该查询为我提供了字符串
  • Pojo保存字符串(这给了我带有转换问题的字符串)
  • 该类使用查询和带有数据的Pojo对象(表明解码错误)

起初我有 (MyBatis和Spring注入依赖项和参数):

public class Pojo {
    private String params;
    public void setParams(String params) {
        try {
            this.params = params;
        }
    }

}

解决方案:

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;
        }
    }

}


 类似资料:
  • 我试图保存一个字符串在希伯来文文件,同时有文件ANSI编码。恐怕所有的尝试都失败了。 PHP文件本身是UTF-8 这是我正在尝试的代码: 由于某种原因,返回false。 另一次尝试是: 这返回一个空字符串。当这不起作用时,将输出字符集更改为Windows-1255的工作。所以函数本身工作,但由于某种原因,它不转换为1252。 我运行这个函数之前和之后的和打印的结果 在图标之前编码是UTF-8,在图

  • 我有UTF-8源数据,我必须创建在Windows 1252字符编码编码的CSV文件。 我尝试了经典功能,但效果不佳。它必须支持转换后的塞尔维亚字符: "čćžšđ" 。 此外,我还尝试转换为CP1252、ISO-8859-1、ISO-8859-2,功能包括:mb_convert_编码、iconv和iconv_set_编码。 有人知道该试试什么吗?

  • 在我的Silverlight应用程序中,我得到了一个用windows-1252编码的XML文件。现在我的问题,它不会正确显示,直到Windows-1252字符串转换为UTF8字符串。在一个正常的C#环境中,这不会是一个大问题:在那里我可以做这样的事情: (将字符串的字符编码从windows-1252转换为utf-8) 但是silverlight不支持windows-1252,它只支持unicode

  • 将编码传递到UTF-8后,我无法在Windows-1252中显示字符串。 我被迫在init中转换为UTF-8 我想将我的字符串转换为Windows-1252字符以显示它: 我正在得到这个结果 如何获得正确的以下结果? 谢谢! 当做

  • 我正在尝试将我们的数据库从latin1转换为UTF-8。不幸的是,我不能做一个大规模的单一切换,因为应用程序需要保持在线,我们有700GB的数据库要转换。 因此,我试图利用mysql的一些技巧,将表转换为UTF-8,而不是数据。我希望数据能够被实时读取、转换和替换。(如果愿意,可以进行JIT转换) 我们的php应用程序目前使用所有默认值,所以它使用latin1字符集连接到mysql,并丢弃在lat

  • 我需要转换UTF-8字符集到Windows 1252使用PHP和我没有太多的运气到目前为止。我的目标是将文本传输到第三方系统,并排除任何不在Windows 1252字符集中的字符。 我尝试了iconv和mb_convert_编码,但都得到了意想不到的结果。 两者的输出均为“K”?本哈文? 我没有料到会有这样的结果?”s,因为这些字符在WINDOWS-1252字符集中。 有人能帮我解释一下吗。