Что это проблема с кодировкой?

Valensia

Guest
Что это проблема с кодировкой?

Вобщем написал я форум. При занесении текста в базу использовал htmlspecialchars($text)

Сегодня увидел что некоторые символы неправильно отображаются: ö ß ü ø

Что это такое?
 

SiMM

Новичок
> При занесении текста в базу использовал htmlspecialchars($text)
А зачем ты вообще его использовал при занесении в базу? Можешь осмысленно объяснить?
А вообще, как локализовывать проблему и как задавать вопросы на форуме написано в PHP FAQ: Ничего не работает! Что делать???
 

Фанат

oncle terrible
Команда форума
а теперь напиши, что ты на самом деле использовал
 

Valensia

Guest
Текст вводился на немецком языке и символы которых нет в английском языке выводились ихними кодами.
Я так понимаю надо доустановить модуля на сервере.. У Вас на сайте отобразилось все нормально а у меня кодами например:
ü - & # 2 52; и т.д.
 

Фанат

oncle terrible
Команда форума
htmlspecialchars не имеет никакого отношения к немецким кодам.

Я так понимаю надо доустановить модуля на сервере
ну кто бы сомневался.
Каждый. Просто КАЖДЫЙ ламер на сто двадцать процентов уверен в том, что его программа не работает ИСКЛЮЧИТЕЛЬНО по вине "модулей на сервере"! иначе и быть не может. Сервер, база данных, функция - все будут виноваты. Но только не кривой код нашего героя. Код - как жена цезаря - вне подозрений. Как и прямизна рук, которые его писали. Этот вариант даже не рассматривается.
 

Valensia

Guest
Ну вот на локальном сервере пишу просто:
echo "üäö";

Выводит - uao

Разве так должно быть?

-~{}~ 21.05.05 12:50:

Хотя дествительно что-то не так попробовал в пхпбб написать - все нормально выводит.

Как же обработать правильно текст, подкажите!!
 

Фанат

oncle terrible
Команда форума
К обработке текста твои проблемы не имеют отношения.
если бы ты УДОСУЖИЛСЯ загляднуть в документацию по функции, которую считаешь виновницей своих бед, ты бы в этом убедился.
 

Valensia

Guest
Что-то вобще ничего не понимаю. В локальном варианте все работает:
При вставке в базу :
htmlspecialchars(mysql_escape_string($text))

При выборке:
nl2br(stripslashes($text));

Может это из-за того что вначале стоит указана кодировка в теге мета windows-1251 ??
 

Фанат

oncle terrible
Команда форума
Может это из-за того что вначале стоит указана кодировка в теге мета windows-1251 ??
ЧТО МЕШАЕТ тебе проверить это утверждение?
может быть, ты хоть палец о палец ударишь, чтобы помочь себе, вместо того, чтобы писать петиции на форкм?

При выборке stripslashes() - лишнее.
при вставке htmlspecialchars - лишнее. надо делать при выборке.
к кодировке, впрочем, ни то ни другое не имеет отношения.
Ещё раз повторить?
 

SiMM

Новичок
> Может это из-за того что вначале стоит указана кодировка в теге мета windows-1251 ??
Интересно, где ты в CP1251 увидел символы немецкого алфавита? Ессно они будут представляться при помощи HTML-кодирования.
 

Valensia

Guest
Фанат ну обьясни мне пожалуйста как сделать чтобы немецкий или польский текста отображались нормально. Как он должен в базе лежать?
Вот например код:
PHP:
<html>
<body>
<?
$a='&#246;p&#252;';
echo $a;
?>
</body>
</html>
Почему его как opu??? Может нужно при выборке еще к тексту что-то применять, как-то перекодировать?
 

SiMM

Новичок
Вариант 1. Использовть соответствующую кодировку.
Вариант 2. Использовать UTF-8
И в том, и в другом случае необходимо формировать хидер с указанием правильной кодировки и прописывать кодировку в meta
PS: почитай чтоли хотя бы Как сделать многоязычную WWW страницу - может хоть что-то дойдёт.
 

Valensia

Guest
Вместо этой абракадабры в коде стояли немецкие буквы

-~{}~ 21.05.05 13:32:

1- А как я буду знать какой текст? &#252;&#246; И сдесь же стоит windows-1251 !
2. Я пробовал в браузере перекодировать текст - не помогает
 

SiMM

Новичок
> &#252;&#246; И сдесь же стоит windows-1251 !
Вид -> просмотр HTML-кода.
 

Valensia

Guest
Ну и последний наверное вопрос. Почему
PHP:
<html>
<head>
<meta http-equiv="content-type" content="text/plain; charset=utf-8">
</head>
<body>
&#196; &#228; &#220; &#252; 
</body>
</html>
Почему эти немецкие буквы выводятся без точек а просто: A a U u
 
Сверху