@ECHO Off SETLOCAL SET "betabet=abcdefghijklmnopqrstuvwxyz1234567890!*$^&^^+=-\^|^>;'.,/?^<" ECHO %betabet% >u:\betabet.file ECHO %betabet% CALL :upper betabet ECHO %betabet% CALL :upcase u:\betabet.file GOTO :EOF :upper FOR %%a IN (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) DO CALL SET "%1=%%%1:%%a=%%a%%%" GOTO :EOF :upcase setlocal EnableDelayedExpansion for /F "delims=" %%a in (%1) do ( set "line=%%a" for %%b in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do ( set "line=!line:%%b=%%b!" ) echo !line! ) endlocal GOTO :eof
Метод, на который указывает Aacini в командный файл Windows, читает текстовый файл и конвертирует все в верхний регистр для некоторых символов, как показано в приведенной выше партии.
] Эта партия также потерпит неудачу, если соответствующая строка содержит определенные символы (например,
%:
) - она преобразует альфы, но удаляет%
и:
.Вышеуказанная партия сначала устанавливает строка, содержащая разные символы, отображает ее, сохраняет ее как файл, затем преобразует ее с помощью
:upper
.Для сравнения, файл затем обрабатывается с помощью функции
:upcase
(полученной из связанного ответа) .После действительного комментария и дальнейшего изучения Aacini, приведены некоторые методы (включая демонстрацию метода «read-from-file»)
Подпрограмма
:showline
существует для сокращения кода путем отображенияline
в режиме delayedexpansion@ECHO Off SETLOCAL set "line=abcdefghijklmnopqrstuvwxyz1234567890|!#$%%&/\()=?<>,;.:"'_-+*~^^[]{}" SETLOCAL enabledelayedexpansion >u:\betabet.file ECHO "!line!" endlocal CALL :showline ECHO --- show conversion using "upper - caret disappears CALL :upper line CALL :showline ECHO ------------------------------ ECHO --- show actual file contents ^& data read from file type u:\betabet.file CALL :upcase u:\betabet.file ECHO ------------------------------ set "line=abcdefghijklmnopqrstuvwxyz1234567890|!#$%%&/\()=?<>,;.:"'_-+*~^^[]{}" CALL :showline ECHO --- show conversion using "inline-conversion - caret PRESERVED setlocal ENABLEDELAYEDEXPANSION for %%b in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do set "line=!line:%%b=%%b!" echo "!line!" ^<--- in inline conversion endlocal&SET "line=%line:^=^^%" CALL :showline ECHO ------------------------------ set "line=abcdefghijklmnopqrstuvwxyz1234567890|!#$%%&/\()=?<>,;.:"'_-+*~^^[]{}" CALL :showline ECHO --- show conversion using "upcase2 - caret disappears CALL :upcase2 line CALL :showline GOTO :EOF :upper FOR %%a IN (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) DO CALL SET "%1=%%%1:%%a=%%a%%%" GOTO :EOF :upcase setlocal EnableDelayedExpansion for /F "delims=" %%a in (%1) do ( ECHO read%%a set "line=%%a" for %%b in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do ( set "line=!line:%%b=%%b!" ) echo conv!line! ) endlocal GOTO :eof :upcase2 setlocal ENABLEDELAYEDEXPANSION for %%b in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do set "%1=!%1:%%b=%%b!" endlocal&CALL SET "%1=%%%1%%" GOTO :eof :showline SETLOCAL enabledelayedexpansion ECHO "!line!" endlocal GOTO :eof
Кажется необходимостью в некоторых основных объяснениях о чем-то, что, к сожалению, даже большинство программистов не понимает правильно.
Файлы как Ваша страница HTML сохранены и переданы по Интернету как последовательность байтов, но Вы хотите их отображенный как символы. Для перевода байтов в символы Вам нужен ряд правил, названный кодировка символов . К сожалению, существует много различных кодировок символов, которые исторически появились для обработки различных языков. Большинство из них основано на американце кодирование ASCII, но как только у Вас есть символы за пределами ASCII такой как немецкие умляуты , необходимо быть очень осторожными, о котором кодировании Вас используют.
источник Вашей проблемы - то, что для корректного декодирования файла HTML, браузер должен знать который кодирование использовать. Можно сказать его так несколькими способами:
, Таким образом, Вы должны к [1 116] выбрать кодирование того, сохраните файл HTML с помощью того кодирования и удостоверьтесь, что Вы объявляете, что кодирование по крайней мере одним из способов упомянуло выше (и если Вы используете, больше чем один убеждает чертовски, они соглашаются). Что касается какой, кодируя для использования немцы обычно используют ISO/IEC 8859-15, но UTF-8 является хорошей альтернативой, которая может обработать любой вид символов неASCII одновременно.
UTF-8 является Вашим другом.
Попытка
<META HTTP-EQUIV="content-type" CONTENT="text/html; charset=utf-8">
и чек, который кодирование Вашего веб-сервера посылает в заголовке.
при использовании PHP можно отправить собственные заголовки таким образом (необходимо поместить это перед любым другим выводом):
<?php header('Content-Type: text/html; charset=utf-8'); ?>
Также перепроверка, что Вы сохранили свой документ в UTF-8.
Вы попробовали ü
(Гј) и Ü
(Гњ)?
можно найти, как ввести другие буквы здесь .
Походит на проблему кодировки символов, в которой файл сохранен как различная кодировка символов к тому, что веб-сервер говорит, что это.
Мне не нравится использование объектов HTML (как %uuml;), они только необходимы, когда существует что-то не так с Вашим characterset.
Короче говоря:
ПРАВИЛЬНЫЙ путь состоит в том, чтобы зафиксировать Ваш characterset.
Простой способ состоит в том, чтобы просто использовать объекты. Вы никогда не можете видеть проблемы с этим.
Разыскивающая characterset ошибка может быть очень трудной. Если Вы даете нам URL, где мы видим проблему, мы можем, вероятно, дать Вам хорошую подсказку, где посмотреть.