java - 将 UTF-8 转换为 Shift-JIS

标签 java utf-8 character-encoding shift-jis

我编写了简单的转换代码,将 UTF-8 转换为日语字符。

    private static String convertUTF8ToShiftJ(String uft8Strg) {
        String shftJStrg = null;
        try {

            byte[] b = uft8Strg.getBytes(UTF_8);
            shftJStrg = new String(b, Charset.forName("SHIFT-JIS"));
            logger.info("Converted to the string :" + shftJStrg);
        } catch (Exception e) {
            e.printStackTrace();
            return uft8Strg;
        }
        return shftJStrg;
    }

但它给出了输出错误,

convertUTF8ToShiftJ START !!
uft8Strg=*** abc000.sh ����started�
*** abc000.sh ��中�executing...�
*** abc000.sh ����ended��*

是否有人知道我在哪里犯了错误或需要一些额外的逻辑,这将非常有帮助!

最佳答案

你的String已经是一个String,所以你的方法是“错误的”。 UTF8 是一种 byte[] 编码,可以在 Java 中转换为 String

它应该是:

private static byte[] convertUTF8ToShiftJ(byte[] uft8) {

如果要将 UTF8 byte[] 转换为 JIS byte[]:

private static byte[] convertUTF8ToShiftJ(byte[] uft8) {
    String s = new String(utf8, StandardCharsets.UTF_8);
    return s.getBytes( Charset.forName("SHIFT-JIS"));
}

String 稍后可以通过 mystring.getBytes(encoding) 转换为 byte[]

请参阅The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)了解更多详情。

关于java - 将 UTF-8 转换为 Shift-JIS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51854216/

相关文章:

java - Neo4j:模式索引查找比遗留索引慢?

php - 在 mysql 数据库中保存 whizzywig 文本时出现问题

c++ - Qt 5编码问题

linux - 不同的Python在不同的SSH登录中表现如何?

java - 为什么时钟会闪烁?

java - 对象框(Java): Property query on a relation doesn't work

java - 为什么PocketSphinx Android demo需要cygwin

utf-8 - 如何制作 flex(词法扫描仪)来读取 UTF-8 字符输入?

python - 在 Python 中使用 ISO 8859-1 编码字符

java - 如何向 J2SE 1.4 API 添加对字符集 IBM437 的支持