проблема с кодировкой на strtolower () - PullRequest
0 голосов
/ 05 марта 2011

Я работаю на польском сайте. Я создаю таблицы и столбцы mysql как utf8_general_ci и добавляю

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

<?php uery = mysql_query("select * from messages order by id desc limit 1"); $array = mysql_fetch_array($query);
$string= $array["message"];
$string = strtolower($string);
echo "<br>$string"; ?>

результат - что-то вроде "prof. dr hab. in�. boles�aw pochopie�"

два вопроса,
1- в чем проблема, почему результат с неизвестным символом? как я могу это исправить?
2-Являются ли utf-8 и utf8_general_ci хорошими для польского сайта?

Ответы [ 3 ]

2 голосов
/ 05 марта 2011

Вы должны использовать mb_strtolower для многобайтовых строк (это относится и ко многим другим строковым функциям php, см. manual ).

Или вы можете запросить егонепосредственно из базы данных:

SELECT LOWER(message) FROM messages ORDER BY id desc LIMIT 1

РЕДАКТИРОВАТЬ: Что касается кодировки: utf8_polish_ci и utf8_general_ci оба в порядке.

0 голосов
/ 05 марта 2011

Используйте utf8_polish_ci и позвольте MySQL выполнить сортировку.

0 голосов
/ 05 марта 2011

Используйте mb_strtolower(), который не обрабатывает один байт как один символ.

Если он недоступен на вашей платформе, его необходимо создать.

Посмотритеу Kohana 3's utf8::strotolower помощник .

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