Как я могу правильно отобразить немецкие символы в HTML?

@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
27
задан GEOCHET 27 March 2009 в 13:36
поделиться

5 ответов

Кажется необходимостью в некоторых основных объяснениях о чем-то, что, к сожалению, даже большинство программистов не понимает правильно.

Файлы как Ваша страница HTML сохранены и переданы по Интернету как последовательность байтов, но Вы хотите их отображенный как символы. Для перевода байтов в символы Вам нужен ряд правил, названный кодировка символов . К сожалению, существует много различных кодировок символов, которые исторически появились для обработки различных языков. Большинство из них основано на американце кодирование ASCII, но как только у Вас есть символы за пределами ASCII такой как немецкие умляуты , необходимо быть очень осторожными, о котором кодировании Вас используют.

источник Вашей проблемы - то, что для корректного декодирования файла HTML, браузер должен знать который кодирование использовать. Можно сказать его так несколькими способами:

, Таким образом, Вы должны к [1 116] выбрать кодирование того, сохраните файл HTML с помощью того кодирования и удостоверьтесь, что Вы объявляете, что кодирование по крайней мере одним из способов упомянуло выше (и если Вы используете, больше чем один убеждает чертовски, они соглашаются). Что касается какой, кодируя для использования немцы обычно используют ISO/IEC 8859-15, но UTF-8 является хорошей альтернативой, которая может обработать любой вид символов неASCII одновременно.

63
ответ дан Peter Mortensen 14 October 2019 в 12:20
поделиться

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.

29
ответ дан Peter Mortensen 14 October 2019 в 12:20
поделиться

Вы попробовали &uuml; (Гј) и &Uuml; (Гњ)?

можно найти, как ввести другие буквы здесь .

4
ответ дан Göran Lilja 14 October 2019 в 12:20
поделиться

Походит на проблему кодировки символов, в которой файл сохранен как различная кодировка символов к тому, что веб-сервер говорит, что это.

2
ответ дан Rowland Shaw 14 October 2019 в 12:20
поделиться

Мне не нравится использование объектов HTML (как %uuml;), они только необходимы, когда существует что-то не так с Вашим characterset.

Короче говоря:

ПРАВИЛЬНЫЙ путь состоит в том, чтобы зафиксировать Ваш characterset.

Простой способ состоит в том, чтобы просто использовать объекты. Вы никогда не можете видеть проблемы с этим.

Разыскивающая characterset ошибка может быть очень трудной. Если Вы даете нам URL, где мы видим проблему, мы можем, вероятно, дать Вам хорошую подсказку, где посмотреть.

2
ответ дан myplacedk 14 October 2019 в 12:20
поделиться
Другие вопросы по тегам:

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