Вопрос по unicode, cmd, windows – UTF-16 на cmd.exe

12

Я "создал каталог" & # x2022; & # x25D8; & # x25AC; & # xA8; & lx; & # x119; & # xF3; & # x142; & # x2665; & # x263A; & # x263B; 0 & Quot; и я хотел бы сделать это видимым с помощью команды dir / b. Пока что команды chcp 10000, chcp 10001 и chcp 65000 (utf-8) завершились неудачно (исходное имя было отображено как "quot; система не может записать на указанное устройство"), или пустой строкой, или символы Юникода были заменены / проигнорированы. В чем причина и как это исправить?Официальная документация бесполезно :(

Небольшое примечание: кодовая страница 65000 - это UTF-7, а 65001 - это UTF-8. Solomon Rutzky
Другой метод:stackoverflow.com/questions/379240/… user2718593
Также CHCP 65001 DIR & gt; UTF8.TXT ТИП UTF8.TXT изstackoverflow.com/questions/379240/… user2718593
Как указано в ответе, это в первую очередь проблема выбора шрифта с поддержкой Unicode. Персонажи, не являющиеся BMP, вероятно, не будут работать в любом случае. Philipp
Я не думаю, что это возможно. Тем не менее, я могу ошибаться, поэтому, пожалуйста, подождите больше ответов. Mark Segal

Ваш Ответ

2   ответа
25

я только что решил мою проблему. Это была ошибка шрифта по умолчанию в cmd.exe, который не может управлять знаками Юникода. Чтобы это исправить (windows 7 x64 pro):

Open/run cmd.exe Click on the icon at the top-left corner Select properties Then "Font" bar Select "Lucida Console" and OK. Write Chcp 10000 at the prompt Finally dir /b

Наслаждайтесь чистым выходом UTF-16 с сердцами, китайскими надписями и многим другим!

cmd.exe по-прежнему не отображает символы вне BMP правильно. (Показывает 2 символа вместо 1).
То же самое, что сказал Филипп. Я вижу каталог с именем, указанным вами, с кодовой страницей Windows 437 по умолчанию для США. Китайский, однако, становится символом замены Unicode, то есть шрифт не поддерживает его.
Мне интересно, этоchcp действительно необходимо? AFAIK это должно работать даже без него, так как Unicode не зависит от кодовых страниц.
0
Обратите внимание, что этот ответ для UTF8, а не UTF16.

Похожие вопросы