|
|
автор: Trianon (из кабака) (13.07.2006 в 10:35) |
|
|
для: alexcpp
(12.07.2006 в 20:21)
| | >Вопрос: Как мре это исправить (я хочу чтоб ucwords правильно
>работал)?
работа строковых функций определяется локалью. Трясите хостера на предмет того, как выставить правильную локаль. | |
|
|
|
|
|
|
|
для: Trianon
(11.07.2006 в 11:02)
| | Вы правы, вот что получилось:
АТЛЕТИЧЕСКАЯ ГИМНАСТИКА 1
аТлеТиЧеСкаЯ гимнаСТика 1
АТЛЕТИЧЕСКАЯ ГИМНАСТИКА 1
|
а в другом случае:
$row = "Взорвите банк";
echo $row."<br>";
echo strtolower($row)."<br>";
echo ucwords($row)."<br>";
|
Взорвите банк
взорвите банк
Взорвите Банк
|
Вопрос: Как мре это исправить (я хочу чтоб ucwords правильно работал)? А так же, мой поиск в MySQL имеет похожие проблеммы. Если товар назван со всеми заглавными буквами то находится только поисковым словом с большинство заглавными буквами (которые можно видеть здесь "аТлеТиЧеСкаЯ гимнаСТика 1"). Очень странно! Если я ввожу "аТлеТиЧеСкаЯ гимнаСТика 1" или "АтлетиЧеСкаЯ гимнаСТика 1" у в посик то товар находится а если "АтлетичеСкаЯ гимнаСТика 1" то уже не находится! | |
|
|
|
|
|
|
|
для: alexcpp
(11.07.2006 в 10:52)
| | 1. Если у Вас базе назначена кодовая страница latin1, то из этого вовсе не следует, что данные в ней хранятся в latin1. Они всё же лежат в (или преобразуются сервером к) cp1251, если в таковой отображаются и Вашим скриптом, и phpMyAdmin.
2. настройки MySql не могут влиять на работу функции strtolower.
Попробуйте выполнить следующий скрипт:
?<
setlocale(LC_ALL, 'ru_RU');
$row = "АТЛЕТИЧЕСКАЯ ГИМНАСТИКА 1";
echo $row."<br>";
echo strtolower($row)."<br>";
echo ucwords($row)."<br>";
?>
|
| |
|
|
|
|
|
|
|
для: Trianon
(11.07.2006 в 10:01)
| | 1. Как видите для меня является реалностью факт что latin1_general_ci имеет русские символы. Могу дать скриншот из phpMyAdmin если не верите. Вообще возможно что там они другое значят но на сайте показываются без проблем в cp1251.
2. В вышеуказаном скрипте я это и делаю: setlocale(LC_ALL, 'ru_RU'); И нет, у хостера есть 'ru_RU', я даже проверял. | |
|
|
|
|
|
|
|
для: alexcpp
(09.07.2006 в 22:41)
| | 1
> Поле MySQL кодированно в latin1_general_ci. ....Взорвите банк
Этого быть не может. В наборе latin1 просто физически нет символов кириллицы вообще, и русских букв вчастности.
2. Настройки MySql тут не при чем.
Вам нужно менять локаль:
> setlocale(LC_ALL, 'ru_RU');
Вероятно, у хостера она называется как-то по другому. | |
|
|
|
|
|
|
|
для: cheops
(10.07.2006 в 10:47)
| | Пробовал обе и многие дригие кодировки. В большинскве случаев (включая cp1251_general_cs) русские символы превращяются в вопросительные знаки. Latin1_genera_cs ничего абсолютно не исправил.
Пробовал конвертировать кодировку с PHP (чтобы не терять русские символы) но ничего не получилось. | |
|
|
|
|
|
|
|
для: alexcpp
(09.07.2006 в 22:41)
| | Выберите сортировку latin1_general_cs, а еще лучше cp1251_general_cs | |
|
|
|
|
|
|
| На моём сайте проблемма странная есть с кодировкой. Поле MySQL кодированно в latin1_general_ci. Пользуюсь системой OsCommerce. Когда вводятся (в базу) слова с всеми заглавны буквами то что-то странное творится с кодировкой.
Вот пример:
setlocale(LC_ALL, 'ru_RU');
while($row = mysql_fetch_array($result))
{
echo $row['products_name']."<br>";
echo strtolower($row['products_name'])."<br>";
echo ucwords($row['products_name'])."<br>";
}
Выходит вот что (только пару примеров):
Взорвите банк
взорвите банк
Взорвите Банк
АТЛЕТИЧЕСКАЯ ГИМНАСТИКА 1
аТлеТиЧеСкаЯ гимнаСТика 1
АТЛЕТИЧЕСКАЯ ГИМНАСТИКА 1
В первом примере всё было нормально а во втором творится неизвесно что. Буду благодарен за любую помощ. | |
|
|
|
|