Строка, содержащая китайский символ в ASCII

1

Это мой код, оба из двух способов дают одинаковый результат.

String description = "test string with 音樂";
byte[] b = description.getBytes("US-ASCII");

//first way
char[] result = new char[b.length];       
for ( int i = 0; i < b.length; i++ ) {
    result[i] = (char)b[i];
}
System.out.println(new String(result)); //output - test string with ??

//second way
System.out.println(new String(b, "UTF-8")); //output - test string with ??

Я использую Eclipse и изменяет кодировку вывода в US-ASCII в разделе " Конфигурация запуска"

Можно ли получить его как строку кодировки US-ASCII?

Спасибо, спасибо!

  • 0
    Так какой вывод вы хотите для "тестовой строки с 音樂"?
  • 0
    Ну чего ты пытаешься достичь? Вы понимаете, что в ASCII просто нет этих символов, верно?
Показать ещё 2 комментария
Теги:
ascii
encoding

2 ответа

2
Лучший ответ

Невозможно преобразовать китайские символы в US-ASCII, потому что они не содержатся в этом наборе символов.

US-ASCII знает только 128 различных символов, а некоторые из них - даже непечатаемые управляющие символы.

  • 0
    Так что это невозможно, если строка содержит китайский или французский символ?
  • 0
    нет. Ссылка, предоставленная Джоном Скитом, показывает все возможные символы.
3

Невозможно преобразовать его в US-ASCII, но,

Если вы просто хотите использовать Unicode escaped string, вы можете использовать утилиту apache common lang,

import org.apache.commons.lang.StringEscapeUtils;

...
StringEscapeUtils.unescapeJava("test string with \u97F3\u6A02"); 
 //gives result : test string with 音樂
StringEscapeUtils.escapeJava("test string with 音樂"); 
 //gives result : test string with \u97F3\u6A02

Ещё вопросы

Сообщество Overcoder
Наверх
Меню