如何将字符串“EP適用が完了しないデバイスの検出”转换为unicode 格式!谢谢
如何将字符串“EP適用が完了しないデバイスの検出”转换为unicode 格式!谢谢
转换完为:
EP\u9069\u7528\u304C\u5B8C\u4E86\u3057\u306A\u3044\u30C7\u30D0\u30A4\u30B9\u306E\u691C\u51FA
[解决办法]
到DOS下去敲native2ascii ,回车后再敲入 "EP適用が完了しないデバイスの検出 "就能得到了.前提条件是你装了jdk的
[解决办法]
public class Main {
public static void main(String[] args) throws Exception {
System.out.println(saveConvert( "EP適用が完了しないデバイスの検出 ", true));
}
/*
* Converts unicodes to encoded \uxxxx and escapes
* special characters with a preceding slash
*/
private static String saveConvert(String theString, boolean escapeSpace) {
int len = theString.length();
int bufLen = len * 2;
if (bufLen < 0) {
bufLen = Integer.MAX_VALUE;
}
StringBuffer outBuffer = new StringBuffer(bufLen);
for(int x=0; x <len; x++) {
char aChar = theString.charAt(x);
// Handle common case first, selecting largest block that
// avoids the specials below
if ((aChar > 61) && (aChar < 127)) {
if (aChar == '\\ ') {
outBuffer.append( '\\ '); outBuffer.append( '\\ ');
continue;
}
outBuffer.append(aChar);
continue;
}
switch(aChar) {
case ' ':
if (x == 0 || escapeSpace)
outBuffer.append( '\\ ');
outBuffer.append( ' ');
break;
case '\t ':outBuffer.append( '\\ '); outBuffer.append( 't ');
break;
case '\n ':outBuffer.append( '\\ '); outBuffer.append( 'n ');
break;
case '\r ':outBuffer.append( '\\ '); outBuffer.append( 'r ');
break;
case '\f ':outBuffer.append( '\\ '); outBuffer.append( 'f ');
break;
case '= ': // Fall through
case ': ': // Fall through
case '# ': // Fall through
case '! ':
outBuffer.append( '\\ '); outBuffer.append(aChar);
break;
default:
if ((aChar < 0x0020) || (aChar > 0x007e)) {
outBuffer.append( '\\ ');
outBuffer.append( 'u ');
outBuffer.append(toHex((aChar > > 12) & 0xF));
outBuffer.append(toHex((aChar > > 8) & 0xF));
outBuffer.append(toHex((aChar > > 4) & 0xF));
outBuffer.append(toHex( aChar & 0xF));
} else {
outBuffer.append(aChar);
}
}
}
return outBuffer.toString();
}
/**
* Convert a nibble to a hex character
* @param nibble the nibble to convert.
*/
private static char toHex(int nibble) {
return hexDigit[(nibble & 0xF)];
}
/** A table of hex digits */
private static final char[] hexDigit = {
'0 ', '1 ', '2 ', '3 ', '4 ', '5 ', '6 ', '7 ', '8 ', '9 ', 'A ', 'B ', 'C ', 'D ', 'E ', 'F '
};
}
[解决办法]
查看java.util.Properties的实现代码
/*
* Converts unicodes to encoded \uxxxx and escapes
* special characters with a preceding slash
*/
private String saveConvert(String theString, boolean escapeSpace)
[解决办法]
java.lang.Process process = Runtime.getRuntime().exec( "native2ascii ");
InputStream in = process.getInputStream();
OutputStream out = process.getOutputStream();
out.write( "EP適用が完了しないデバイスの検出\n ".getBytes());
out.flush();
BufferedReader br = new BufferedReader(new InputStreamReader(in));
System.out.println(br.readLine());
br.close();
in.close();
out.close();