Недавно я попытался объяснить другу, как создать простой командный файл в одну строку:
subst t: "X:\Example"
На моей машине, которая хорошо работала в течение многих лет, но с их я столкнулся с проблемой: их имя содержало не-ASCII символы (точнее турецкие символы ı и ç), которые не были распознаны должным образом.
Простое решение этого, которое я хотел бы добавить
chcp 65001
в верхней части файла, чтобы изменить активную кодовую страницу на UTF-8.
Но это не сработало. На их компьютере это вызвало сбой командной оболочки, которая его выполняла. Я заставил их попробовать несколько разных значений; Сбой 65000, но не 10000, и все значения ниже того, что я пробовал, также работали, но они не соответствовали тем же кодовым страницам, что и те же значения на моем компьютере. Их кодовая страница по умолчанию также отличалась (857 вместо 850, как на моем компьютере). Это имеет смысл, поскольку, согласно MSDN, 857 - это турецкая кодовая страница, а 850 - западноевропейская).
Я знаю, что некоторые кодовые страницы могут изменяться с компьютера на компьютер, но на странице MSDN прямо говорится, что следует использовать UTF-8, потому что другие страницы могут измениться (хотя есть печальная нехватка документации относительно того, как и когда они изменяются).
Это ложно? Может ли значение 65001 измениться? Если это так, то почему это может привести к сбою? Разве это не должно жаловаться на "Неверную кодовую страницу" в худшем случае? И если это действительно изменится, как можно узнать, какое значение использовать, чтобы получить его, или как еще можно заставить его принимать символы, не входящие в ASCII?
Я использую Windows 10 с английским языком (он был предустановлен с Windows 8.1 итальянский), в то время как мой друг использует Windows 7 турецкий.