현재 JSON 문서 용으로 약간의 파서를 작성 중입니다. UTF 문자는 \u0628
으로 표시 할 수 있습니다.파일에서 16 진수 유니 코드 문자열을 읽고 Java 문자열로 변환 하시겠습니까?
문자열 \u0628
을 어떻게 실제 Java 문자로 변환 할 수 있습니까?
현재 JSON 문서 용으로 약간의 파서를 작성 중입니다. UTF 문자는 \u0628
으로 표시 할 수 있습니다.파일에서 16 진수 유니 코드 문자열을 읽고 Java 문자열로 변환 하시겠습니까?
문자열 \u0628
을 어떻게 실제 Java 문자로 변환 할 수 있습니까?
:
String str = myString.split(" ")[0];
str = str.replace("\\","");
String[] arr = str.split("u");
String text = "";
for(int i = 1; i < arr.length; i++){
int hexVal = Integer.parseInt(arr[i], 16);
text += (char)hexVal;
}
또는 사용할 수있는 아파치 코 몬즈 랭 :
:
import org.apache.commons.lang.StringEscapeUtils;
@Test
public void testUnescapeJava() {
String sJava="\\u0048\\u0065\\u006C\\u006C\\u006F";
System.out.println("StringEscapeUtils.unescapeJava(sJava):\n" + StringEscapeUtils.unescapeJava(sJava));
}
output:
StringEscapeUtils.unescapeJava(sJava):
Hello
당신은 UTF_16
캐릭터 세트를 사용해 바이트를 구문 분석 할 수 있습니다 예 :
replaceCharEscapes("\\u0043:\\\\u0050\\u0072\\u006f\\u0067\\u0072\\u0061\\u006ds")
반환 C:\Programs
byte[] data = {0x06, 0x28};
String string = new String(data, StandardCharsets.UTF_16);
당신은 정규식을
private static Pattern ESCAPE_PATTERN = Pattern.compile("\\\\u([0-9a-fA-F]{2})([0-9a-fA-F]{2})");
public static String replaceCharEscapes(String input) {
Matcher m = ESCAPE_PATTERN.matcher(input);
if (!m.find()) {
return input;
}
StringBuilder outputBuilder = new StringBuilder(input.subSequence(0, m.start()));
int lastEnd = m.end();
outputBuilder.append(getChar(m));
while (m.find()) {
outputBuilder.append(input.subSequence(lastEnd, m.start()))
.append(getChar(m));
lastEnd = m.end();
}
if (lastEnd != input.length()) {
outputBuilder.append(input.subSequence(lastEnd, input.length()));
}
return outputBuilder.toString();
}
private static String getChar(Matcher m) {
return new String(new byte[] {
Byte.parseByte(m.group(1), 16),
Byte.parseByte(m.group(2), 16),
});
}
예를 사용하여 탈출을 찾을 수