Mysql SET NAMES UTF8 - как от него избавиться? - PullRequest
1 голос
/ 18 апреля 2010

В очень загруженном PHP-скрипте у нас в начале есть вызов "Set names utf8", который устанавливает набор символов, в котором mysql должен интерпретировать и отправлять данные обратно с сервера на клиент.

http://dev.mysql.com/doc/refman/5.0/en/charset-applications.html

Я хочу избавиться от этого, поэтому я установил default-character-set = utf8 в ini-файле нашего сервера. (см. ссылку выше)

Эта настройка, кажется, работает, поскольку соответствующие параметры сервера: 'character_set_client', 'utf8' 'character_set_connection', 'utf8' 'character_set_database', 'latin1' 'character_set_filesystem', 'binary' 'character_set_results', 'utf8' 'character_set_server', 'latin1' 'character_set_system', 'utf8' Но после этого изменения и комментирования набора имен utf8 все равно данные начинают выходить искаженными.

Пожалуйста, сообщите ....

Ответы [ 2 ]

1 голос
/ 18 апреля 2010

Установка кодировки соединения между PHP и MySQL - это работа PHP; Я не думаю, что настройка MySQL повлияет на это.

Я бы действительно рекомендовал сохранить некоторый код в приложении, чтобы установить для символа соединения значение UTF-8. Приложение должно убедиться, что кодировка UTF-8, потому что оно, вероятно, будет сообщать веб-браузерам, что его страницы имеют UTF-8, и если они не совпадают, у вас есть проблемы.

Поскольку ответственность за определение набора символов уже лежит на приложении, вы можете также сделать приложение тем, которое задает набор символов для соединения с базой данных, а не оставлять его как проблему развертывания и еще одну ошибку при установке. приложение на новом сервере.

Однако я бы лично использовал mysql_set_charset , чтобы сделать это, а не SET NAMES.

Точно так же, если в приложении есть код для создания схемы, убедитесь, что этот код говорит MySQL сделать таблицы UTF-8, вместо того, чтобы оставить его в настройках базы данных по умолчанию и дать себе еще одну проблему развертывания, о которой нужно беспокоиться .

0 голосов
/ 18 апреля 2010

пропустить-символьный набор-клиент-рукопожатие

но я не думаю, что задание запроса имен - это слишком много работы. Вы получили свою проблему из ниоткуда. И собирается ограничить функциональность вашей базы данных

...