В Windows 7 каталог или дерево не могут отображать символы Юникода, даже начиная cmd с cmd / U

15933
太極者無極而生

В Windows 7 каталог или дерево не могут отображать символы Юникода, даже начиная cmd с cmd / U

Поэтому я бы нажал, Window Key + Rчтобы запустить что-то, и набрал, cmd /Uчтобы контент мог обрабатывать Unicode.

И затем, используя dirили tree /F, содержимое в Unicode не будет отображаться как Unicode. (в Window Explorer (файловый менеджер) Unicode покажет)

Есть ли способ справиться с этим? Чтобы получить символы Юникода для проверки ваших имен файлов, вы можете перейти к

http://news.google.com/news?edchanged=1&ned=tw

и вы сможете получить много символов Unicode там (UTF-8)

5
Вы уже пробовали это с Powershell? В Windows 7 он установлен по умолчанию. KdgDev 14 лет назад 0
Если я использую PowerShell и выполняю `help ls -full`, у него нет такой опции, как` cmd` `dir / B` 太極者無極而生 14 лет назад 0
Помните, PowerShell передает объекты между командами - вы можете получить поведение, подобное dir / b, выполнив: dir | % {$ _. Name} Goyuix 13 лет назад 0
@Guyuix: или `gci | выберите -expand Name` Joey 13 лет назад 0

3 ответа на вопрос

6
Joey

Измените шрифт для окна консоли на шрифт TrueType, такой как Lucida Console или Consolas. С растровыми шрифтами вы ограничены набором символов OEm.

cmd /u изменяет только выходные данные в файлах, а не то, что вы видите на экране.

PowerShell по умолчанию использует шрифт TrueType, поэтому он работает для вас.

Это не имеет ничего общего с cmd.

Даже если я перехожу на Lucida или Consolas и запускаю cmd / u, я не получаю символы Unicode. Snark 13 лет назад 1
Если вы видите коробки, то это * действительно * работает. Консольная подсистема не поддерживает переключение шрифтов, поэтому она может использовать глифы только из указанного вами шрифта. И поскольку ни один из шрифтов не имеет глифов для иероглифов Хана, вы увидите только прямоугольники. Тем не менее, текст * есть * там; Вы можете скопировать и вставить его, например. Однако в PowerShell вы не увидите ничего иного, если только вы не используете PowerShell ISE (который не является консольным приложением и поэтому не подвержен тем же ограничениям). Joey 13 лет назад 2
@Joey Проблема полностью связана с использованием CMD. CMD * не может * отображать символы Unicode. CMD может отображать символы DBCS, но только язык вашей системы. Измените язык вашей системы на Shift-JIS, перезагрузитесь, и вы сможете показывать японские (только Shift-JIS, а не Unicode) символы. Процессор командной строки CMD поддерживает Unicode, таким образом, вы можете направить вывод в файлы и открыть их, например, в Блокноте, но вы не можете * отобразить * Unicode. Jeff 9 лет назад 1
@Jeff, он не может отображать много символов просто потому, что эти символы не существуют в текущем шрифте. Он не может просто заменить символы на те же в другом шрифте, как в GUI, так как политика шрифтов в cmd очень строгая, он принимает только определенный шрифт фиксированной ширины. Это не из-за локали, потому что если я установлю кодовую страницу на вьетнамский, cmd все равно сможет без проблем отображать символы русского, турецкого, японского ... при условии, что символы доступны в шрифте. phuclv 9 лет назад 1
Это не совсем верно, что `Это не имеет ничего общего с cmd`. Когда я использую `dir / s` в консоли, символы юникода отображаются правильно, в то время как когда я передаю их в файл, они путаются. Только `chcp 65001` решает проблему. Suncatcher 6 лет назад 0
@Suncatcher: перенаправление является функцией `cmd`, поэтому, конечно, если вы используете такую ​​функцию, задействуется` cmd`. Попробуйте выбрать и скопировать символы Unicode в консоли, однако это никак не связано с `cmd`. Joey 6 лет назад 0
1
user2718593

https://stackoverflow.com/questions/10764920/utf-16-on-cmd-exe

  1. Open/run cmd.exe
  2. Click on the icon at the top-left corner
  3. Select properties
  4. Then Font bar
  5. Select Lucida Console and OK.
  6. Write Chcp 10000 at the prompt
  7. Finally dir /b

Also from https://stackoverflow.com/questions/379240/is-there-a-windows-command-shell-that-will-display-unicode-characters/24135341#24135341

  1. CHCP 65001
  2. DIR > UTF8.TXT
  3. TYPE UTF8.TXT
10000 не является кодовой страницей Unicode и может отображать только символы в Mac Roman phuclv 10 лет назад 0
Как вы можете отображать китайские, японские символы или смайлики в этой кодовой странице? phuclv 10 лет назад 0
Для японского языка вы можете сделать chcp 932. Но здесь используется Shift-JIS, поэтому смайлики или китайцы не будут работать. Tensigh 7 лет назад 0
0
Mehrdad

Это проблема не только командной строки, но и проблемы Windows в целом. «Широкие символы» функции C в Windows (а именно wprintf) не поддерживают Unicode.

Доказательство вашей претензии? MSDN постоянно упоминает широкоугольные варианты для Unicode. Joey 13 лет назад 0
[Здесь] (https://connect.microsoft.com/VisualStudio/feedback/details/101864/wprintf-has-no-unicode-support). Mehrdad 13 лет назад 1
Вы знаете, что это ошибка, о которой сообщалось в * предварительной версии * Visual Studio * 2005 * и которая была исправлена ​​в течение длительного времени (не говоря уже о том, что мы сейчас на VS 2010 ...)? Также обратите внимание, что Windows API можно легко использовать, и нет особой причины использовать стандартную библиотеку C в местах, где проблем с переносимостью не возникнет. Joey 13 лет назад 0
@Joey: нет, я не знал об этом. Тем не менее, сейчас я использую Visual Studio 2008 и вызываю `wprintf (L" 私 ")`, и он определенно * не * печатает что-либо в Unicode. У вас есть какой-нибудь пример сложных скриптов, которые * действительно * печатаются с помощью `wprintf`? (Изменение языкового стандарта не требуется, потому что строки UTF-16.) Mehrdad 13 лет назад 0
Консоль Windows поддерживает Unicode, потому что она использует Unicode за кулисами http://stackoverflow.com/questions/1259084/what-encoding-code-page-is-cmd-exe-using?lq=1 http: // stackoverflow. com / questions / 2213541 / vietnamese-символ-в-сети-console-application-utf-8? lq = 1 http://stackoverflow.com/questions/388490/unicode-characters-in-windows-command-line-how ? lq = 1 В Windows 7 кодовая страница 65001 не может правильно отображать символы, но вы можете скопировать их в текстовый редактор, чтобы увидеть правильный вывод. В Windows 8 он отображает UTF-8 без проблем phuclv 10 лет назад 1
@ LưuVĩnhPhúc: В вопросе говорилось, что консоль * не может * показывать *** символы Unicode *, * не * что она не может * копировать * их ... поэтому возможность копировать-вставить, чтобы увидеть ее правильно, ничего не меняет мой ответ. Я не пробовал это на Win8, но я скептически отношусь к тому, что на самом деле он будет правильно отображать Unicode ... Вы пробовали что-то сложное, например, китайский? Mehrdad 10 лет назад 0
Извините, я раньше не проверял китайские иероглифы на Windows 8. Но на самом деле невозможность отображения всех символов Unicode является проблемой шрифта не потому, что wprintf не поддерживает Unicode, поэтому ваше последнее утверждение неверно. В китайской и японской локалях Windows используется другой шрифт, который я не могу выбрать в других локалях. Я не знаю, почему они все еще не допускают все моноширинные шрифты и замену шрифтов в консоли, хотя это было отмечено десятилетия назад phuclv 10 лет назад 0
Я проверил и действительно wprintf поддерживает Unicode на Windows phuclv 10 лет назад 0
@ LưuVĩnhPhúc CMD не может отображать символы Юникода. Может отображать символы DBCS. Если вы видите символы DBCS, это потому, что ваш системный язык настроен на что-то подходящее. Например, японская Shift-JIS (кодовая страница 932) позволяет отображать японские символы. Это через DBCS, но не Unicode. Jeff 9 лет назад 0
@Jeff Вы видели страницы моего комментария выше? cmd поддерживает UTF-16 изначально и UTF-8, если задана кодовая страница 65001. Вы можете писать символы юникода без изменения кодовой страницы. Это просто дисплей не правильно в некоторых условиях phuclv 9 лет назад 0
@ LưuVĩnhPhúc, как я уже сказал, CMD не может * отображать * Unicode. Я не знаю, что вы думаете, что видите, но это не Unicode. Учитывая, что весь вопрос был о * отображении * символов Unicode, я не вижу уместности того, чтобы CMD был Unicode «за кулисами» и был в состоянии копировать / вставлять или транслировать вывод Unicode. Ваше утверждение о том, что невозможность отображения Unicode является * проблемой шрифта *, неверно. Это потому, что CMD - это программа DBCS, а не программа Unicode. Jeff 9 лет назад 0
@ Да нет, он поддерживает Unicode. Это просто кодовые точки DBCS, преобразованные в Unicode. Разве вы не видите картинки с символами из разных кодовых страниц? Как вы можете отобразить это в определенной кодовой странице? И большинство из этих кодовых страниц также не являются DBCS, потому что они используют только 1 байт для кодирования символов. phuclv 9 лет назад 0