【问题标题】:Java Code to correct UTF-8 Coded Field Back to 8 Bit ASCIIJava 代码将 UTF-8 编码字段更正回 8 位 ASCII
【发布时间】:2018-03-24 02:23:50
【问题描述】:

我正在使用 JAVA 处理一些数据。从数据的外观来看,一个 8 位 ASCII 名称似乎是使用 UTF-8 编码的,但存储在 ASCII 中。

数据字段中的值:“José Flores”
应该存储的内容:“José Flores”

为了验证我的怀疑,我运行了以下代码:

byte[] utf8Bytes = c_TOBETRANSLATED.getBytes("UTF-8");
String s2 = new String(utf8Bytes);

TOBETRANSLATED = "José Flores" 时,它返回 "José Flores"。所以看来我的数据字段是 UTF-8 编码的。因此,为了尝试将数据转换回 ASCII,我尝试了以下代码:

byte[] utf8Bytes = c_TOBETRANSLATED.getBytes("ASCII");
String s2 = new String(utf8Bytes);

TOBETRANSLATED = "José Flores" 时,它返回 "José Flores"。

我做错了什么?
我需要TOBETRANSLATED = "José Flores" 才能返回 "José Flores"。

【问题讨论】:

    标签: java utf-8 ascii 8-bit


    【解决方案1】:

    试试这个:

    byte[] utf8Bytes = c_TOBETRANSLATED.getBytes("ISO-8859-1"); String s2 = new String(utf8Bytes, "UTF-8");
    

    【讨论】:

    • 效果很好。对于我错误地以 UTF-8 格式保存的数据,它正确地返回了它。然而,它现在产生了一个新问题。我的一些记录以 8 位 ASCII 正确存储。因此,如果我让他们运行该代码,他们最终会损坏。
    • 例如,一条记录将显示“José Flores”,现在返回“José Flores”。下一个记录被更正并包含“何塞·罗梅罗”,但通过代码变为“何塞·罗梅罗”。是否有条件测试可以检测 UTF-8,所以我只能翻译这些记录?
    猜你喜欢
    • 2011-06-26
    • 2014-06-19
    • 2020-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-25
    相关资源
    最近更新 更多