Как отобразить символ 0x96 в командном файле? - PullRequest
3 голосов
/ 04 января 2011

У меня есть проект TFS с названием 0x96 в названии, например. «Проект - Х», на который мне нужно ссылаться в командном файле. Проблема заключается в том, что этот конкретный тире представлен 0x96 (а не 0x20), который является управляющим символом в Unicode (û в ASCII?), Поэтому следующее (в файле .cmd в кодировке ANSI) не выполняется как «Project û X».

echo "Project – X"

Но при вставке прямо в командную строку (я думаю) он обманывает и переводит 0x96 в 0x20 (что не очень хорошо, поскольку мои имена файлов не совпадают). Я попробовал это с помощью шестнадцатеричного редактора, и похоже, что там есть какой-то обман.

Файл .cmd не будет работать, если он закодирован как-либо, кроме ANSI.

Ответы [ 2 ]

3 голосов
/ 05 января 2011

По умолчанию cmd.exe использует старые кодовые страницы "OEM", тогда как приложения Windows, предшествующие Unicode, используют кодовые страницы "ANSI" ( Кодовые страницы, поддерживаемые Windows ).

Вы будете( as jeb alludes ) либо нужно сохранить текстовый файл в OEM-кодировке (при условии, что в нем есть даже символ), либо переключить консоль в кодировку ANSI.

2 голосов
/ 04 января 2011

Как-то так работает

@echo off
SETLOCAL EnableDelayedExpansion
chcp 1252
set "name=Projekt û X.txt"
chcp 850
type "!name!"

Важной вещью является chcp 1252 , chcp 850 предназначен только для возврата к моей кодовой странице по умолчанию, но это не обязательно.

...