字符串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;
}