|
|
|
|
|
для: Trianon
(20.11.2007 в 01:44)
| | Спасибо Вам огромное, всё теперь хорошо. Я тоже заметила эту арабскую кодировку 1256, но не знала, как её поменять. Спасибо! | |
|
|
|
|
|
|
|
для: viera1
(19.11.2007 в 21:58)
| | мало поменять кодировку соединения.
Нужно еще изменить кодировку базы данных перед тем, как создавать таблицы в ней.
Сделать это можно оператором
ALTER DATABASE `ИмяБД`
DEFAULT CHARACTER SET cp1251
COLLATE cp1251_general_ci
|
А сейчас у Вас БД в кодировке cp1256, которая наверняка с cp1251 в части русских букв не пересекается.
Конечно, в таком раскладе менять сессионную кодировку недостаточно - БД просто не в состоянии хранить русские символы. | |
|
|
|
|
|
|
|
для: cheops
(19.11.2007 в 11:43)
| | Я обработала выполнение UPDATE-оператора, как Вы посоветовали, но результат тот же.
Нет сообщений об ошибке, возвращаются ??????.
После выполнения SET NAMES cp1251; операторы
SHOW SESSION VARIABLES LIKE 'char%';
SHOW LOCAL VARIABLES LIKE 'char%';
SHOW VARIABLES LIKE 'char%';
Показывают один и тот же набор:
character_set_client utf8
character_set_connection utf8
character_set_database cp1256
character_set_filesystem binary
character_set_results utf8
character_set_server latin1
character_set_system utf8
|
| |
|
|
|
|
|
|
|
для: viera1
(18.11.2007 в 14:38)
| | >Я делаю запрос
>SHOW VARIABLES LIKE 'char%'.
>А как я могу увидеть состояние сессионных переменных?
Воспользуйтесь оператором
SHOW SESSION VARIABLES LIKE 'char%'
|
или
SHOW LOCAL VARIABLES LIKE 'char%'
|
Обработайте выполнение UPDATE-оператора - он не возвращает ошибок
<?php
if(!mysql_query ($sql)) exit(mysql_error());
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(18.11.2007 в 12:55)
| | Я делаю запрос
SHOW VARIABLES LIKE 'char%'.
А как я могу увидеть состояние сессионных переменных?
В качестве теста я запускаю маленький скрипт:
$dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd);
@mysql_select_db($dbname,$dbcnx);
mysql_query ("SET NAMES cp1251");
mysql_query("SET CHARACTER SET cp1251");
$result=mysql_query ("SELECT * FROM test");
for ($data=array(); $row=@mysql_fetch_assoc($result); $data[]=$row);
$name=$data[0][name];
echo "name = ".$name."<br>";
$sql = "UPDATE `test` SET `name` = 'Главная1' ;";
echo $sql;
mysql_query ($sql);
$result=mysql_query ("SELECT * FROM test");
for ($data=array(); $row=@mysql_fetch_assoc($result); $data[]=$row);
$name=$data[0][name];
echo "<br>name = ".$name."<br>";
|
Ответ следующий:
name = Главная
UPDATE `test` SET `name` = 'Главная1' ;
name = ???????1
|
| |
|
|
|
|
|
|
|
для: viera1
(17.11.2007 в 14:49)
| | >но переменные остаются такие же, как я привела выше.
А вы как это проверяете? Дело в том, что SET NAMES меняет состояние не глобальных, а сессионных переменных. | |
|
|
|
|
|
|
|
для: cheops
(17.11.2007 в 12:37)
| | Пишет:
Ваш SQL-запрос был успешно выполнен.
В документации написано, что "SET NAMES" меняет переменные "character_set_client" , "character_set_results" , "character_set_connection" ,
но переменные остаются такие же, как я привела выше.
Все попытки объясниться с хостером свелись к следующему:
"Unfortunately we only support the current Character set. You cannot change this, the permissions do not allow it. This will not be changed. We apologize for the inconvenience. "
То ли они не понимают, что мне нужно, то ли отказываются что-то делать со своей стороны. | |
|
|
|
|
|
|
|
для: viera1
(17.11.2007 в 12:06)
| | Что пишет в ответ на SET NAMES cp1251;? Странно почему вы не имеете право выполнять этот запрос - дело клиента, в какой кодировке будет проходить текущий сеанс связи с сервером - на другие сеансы это никак не влияет. | |
|
|
|
|
|
|
| Что можно сделать в следующей ситуации:
Хостер у сайта зарубежный, версия MySQL 5.0.45
Установки MySQL следующие:
Variable_name Value
character_set_client utf8
character_set_connection utf8
character_set_database cp1256
character_set_filesystem binary
character_set_results utf8
character_set_server latin1
character_set_system utf8
Менять эти переменные я не могу, нет прав, то есть "SET NAMES cp1251;" и "SET CHARACTER SET cp1251;" не выполняются.
В базе всё хорошо, всё по-русски.
Из базы на сайт mysql SELECT извлекает русские слова, но если я делаю INSERT или UPDATE из админки, то получаю в базе ??????.
Можно что-нибудь сделать с моей стороны или остается менять хостера? | |
|
|
|
|