字符串UTF8转JIS

有些时候字符串需要把从UTF8转为JIS。
有些字符,在UTF8和JIS中都存在,因此如果我们使用UTF8编码格式的话,但是客户想使用JIS时就会发生乱码。
比如如下场景。
1.JAVA是UTF8,DB是JIS。
2.JAVA是UTF8,画面是JIS。
3.JAVA是UTF8,想以JIS编码形式打包。
4.JAVA是UTF8,想以JIS编码作为API参数,调用API等等。

其中JAVA是可以区分编码格式的。
比如:
如果JAVA是UTF8的,如果String = "~"定义了一个变量,那么该变量是UTF8的。
如果JAVA是UTF8的,从DB取得数据是JIS的,那么这时变量里,实际是JIS的编码格式。

如下字符,是两步不同的。

UTF8表示文字コードJIS表示文字コード
\u2212 \uFF0D
\u301C \uFF5E
¢ \u00A2 \uFFE0
£ \u00A3 \uFFE1
¬ \u00AC \uFFE2
\u2014 \u2015
\u2016 \u2225

变换函数

    public static String utf8ToJis(String value) {
        String ret = "";
        if (value!=null) {
            for (int i=0; i<value.length(); i++) {
                char c = value.charAt(i);
                if (c == '\uFF0D') {
                    ret = ret + '\u2212';
                } else if (c == '\uFF5E') {
                    ret = ret + '\u301C';
                } else if (c == '\uFFE0') {
                    ret = ret + '\u00A2';
                } else if (c == '\uFFE1') {
                    ret = ret + '\u00A3';
                } else if (c == '\uFFE2') {
                    ret = ret + '\u00AC';
                } else if (c == '\u2015') {
                    ret = ret + '\u2014';
                } else if (c == '\u2225') {
                    ret = ret + '\u2016';
                } else {
                    ret = ret + c;
                }
            }
        }
        return ret;

    }
posted @ 2022-08-08 14:49  奥兰王子  阅读(521)  评论(0编辑  收藏  举报