2015-05-10 2 views
1

При смене языка на немецкий на моем сайте я получаю черные алмазы с вопросительными знаками. Я установил кодировку (UTF-8) в свои метатеги, и я также создаю браузер с заголовком UTF-8. Что еще может быть причиной этого?Алмазные вопросительные знаки с установленными заголовками

Я устанавливаю заголовок здесь, но я не уверен, что мне нужно сделать что-нибудь еще. Я не часто сталкиваюсь с этой проблемой, поэтому я не знаком с ней.

mb_internal_encoding('UTF-8'); 
mb_http_output('UTF-8'); 
header('Content-Type: text/html; charset=utf-8'); 

Полный код: https://jsfiddle.net/raw/juuh00h6/

Обратите внимание на App.setLang() (последняя функция), которая является то, что на самом деле задает текст по большинству элементов. Пожалуйста, смотрите здесь: http://pastebin.com/CV9QpxGJ для моего lang-файла («lang.js»).

в действии: http://jwelford.co.uk/?lang=de

+0

Вы отметили этот PHP, но не публиковали какой-либо код. У PHP есть свои проблемы с наборами символов. Откуда появился ваш выход, и вы что-то сделали с PHP, чтобы справиться с проблемой набора символов? –

+3

Это намного больше, чем это. Я настоятельно рекомендую вам прочитать [PHP правильный путь по этой теме] (http://www.phptherightway.com/#php_and_utf8). –

+0

"__Выход через Javascript и только PHP используется для установки заголовков ...__" Почему вы использовали тег php? ваша проблема связана с кодировкой JavaScript, а не с php. Взгляните на http://ecmanaut.blogspot.fr/2006/07/encoding-decoding-utf8-in-javascript.html –

ответ

1

Использование mb_internal_encoding и mb_http_output

mb_internal_encoding('UTF-8'); 
mb_http_output('UTF-8'); 

$string = '"Stehler" ist in diesem Sinne ein mögliches Wort im Deutschen , das aber durch das bekannte Wort "Dieb" verhindert wird .'; 


header('Content-Type: text/html; charset=utf-8'); 
echo $string; 

Выходные:

"Stehler" ИСТ в diesem Sinne Ein mögliches Wort-им Deutschen, даш aber durch das bekannte Wort "Dieb" verhindert wir d.


Примечание

Если вам нужно преобразовать строку в верхнем или нижнем регистре, используйте Multibyte String Functions, то есть:

mb_strtoupper($string); 
mb_strtolower($string); 

Демо:

http://ideone.com/QHQhLf

+0

Это тоже не решило мою проблему. :/ – Polarize

+0

Пожалуйста, определите «__did не решить мою проблему__» и опубликуйте пример ввода. –

+0

Это единственный PHP-код, используемый на моей индексной странице. \t mb_internal_encoding ('UTF-8'); \t mb_http_output ('UTF-8'); \t header ('Content-Type: text/html; charset = utf-8'); – Polarize