PHP - UTF8 проблема с немецкими символами - PullRequest
2 голосов
/ 18 ноября 2009

С этим у меня все в порядке, потом помню переполнение стека.

У меня есть сайт, http://bridgeserver3.co.uk/disklavier/de/, язык хранится в простом файле PHP, который выглядит как ..

$translations["welcome_text_3"]="Zum Lieferumfang eines jeden Disklaviers gehren bereits zahlreiche Lieder und das Angebot lsst sich jederzeit erweitern. Unsere neuen Modelle warten sowohl mit akustischen als auch mit digitalen Errungenschaften auf, darunter die Wiedergabe von Audio- und MIDI-CDs sowie die revolutionre ãPianoSmartªÓ-Funktion fr die Synchronisation Ihrer Klavieraufzeichnungen mit handelsblichen Audio-CDs. Und wenn Sie schon eine Weile davon trumen, eines Tages zumindest passabel Klavier spielen zu knnen, hilft Ihnen die neue ãSmartKeyªÓ-Technologie beim Einstudieren Ihrer ersten Stcke und versieht Ihr Spiel sogar mit professionellen Verzierungen.";

(символы отлично отображаются в файле, но не на SO).

Этот текст был экспортирован из электронной таблицы Excel, а плоский файл создан вручную.

Кодировка страницы - UTF8, и я добавил:

header("Content-type: text/html; charset=UTF-8");

к файлу php, но когда я выводю строку, она теряет немецкие символы.

Может кто-нибудь предложить какие-нибудь советы?

Джеймс

Ответы [ 4 ]

3 голосов
/ 18 ноября 2009

Я нашел проблему ...

Excel экспортировал текст в кодировке Windows, поэтому он выглядел правильно даже в TextMate на моем Mac. Когда я снова открыл кодировку UTF8, проблема была видна в файле переводов.

Для разрешения я использовал EditPadPro на ПК для конвертации в UTF8.

Уф.

2 голосов
/ 18 ноября 2009

Может быть, вы могли бы попробовать добавить это внутри тега <head>?

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

1 голос
/ 18 ноября 2009

Я использую Coda, но я думаю, что textmate должен предложить какую-то опцию, например Text-> Encoding-> Unicode UTF-8, активировать его, и тогда ваш файл будет закодирован правильно, а затем сохранен. В любом случае, если вы собираетесь поместить некоторые формы и не уверены, что люди используют правильный режим кодирования, у вас возникнет та же проблема.

Используйте что-то вроде этого:

<?php

$not_utf8 = "An invalid string"; //Put here the bad text for testing
$not_utf8 = mb_convert_encoding($not_utf8, 'UTF-8', mb_detect_encoding($not_utf8));

echo htmlspecialchars($not_utf8, ENT_QUOTES, 'UTF-8'); //The output should be ok, see the source code generated and search for the correct html entities for these special chars

?>

Надеюсь, это поможет вам!

Луис.

1 голос
/ 18 ноября 2009

Кодировка страницы - UTF8, и я добавил:

Вероятно, нет. Убедитесь, что файл php действительно сохранен в кодировке utf-8.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...