Проблема с акцентированными символами при использовании PHP, MySql - PullRequest
0 голосов
/ 08 февраля 2012

Мне нужна помощь в решении проблемы с испанскими специальными символами.Краткое резюме того, что я делаю в первую очередь.Я написал PHP-скрипт, который выбирает данные из Google Spreadsheet, используя Zend Google PHP API.Эти данные затем помещаются в базу данных MySql.

$row=$Col->getText(); // getText - это API Google, который возвращает значение в строке.print "$row"; // Я печатаю содержимое

Но проблема в том, что некоторые испанские символы, такие как --er, появляются как Ã ± er.Позже в коде PHP я продолжаю сохранять эти значения в MySql.И даже в таблицах та же проблема. Не знаю, где проблема.

Я пробовал разные вещи, такие как редактирование PHP-файла ini и добавляю:

mbstring.language               = Neutral       ; Set default language to Neutral(UTF-8) (default)
mbstring.internal_encoding      = UTF-8         ; Set default internal encoding to UTF-8
mbstring.encoding_translation   = On            ;  HTTP input encoding translation is enabled
mbstring.http_input             = auto          ; Set HTTP input character set dectection to auto
mbstring.http_output            = UTF-8         ; Set HTTP output encoding to UTF-8
mbstring.detect_order           = auto          ; Set default character encoding detection order to auto
mbstring.substitute_character   = none          ; Do not print invalid characters
default_charset                 = UTF-8         ; Default character set for auto content type header
mbstring.func_overload  = 7 ; All non-multibyte-safe functions are overloaded with the mbstring alternatives

Добавить вниже в MySql

init_connect='SET collation_connection = utf8_unicode_ci; SET NAMES utf8;'

сервер набора символов = utf8 сервер сопоставления = utf8_unicode_ci skip-set-set-client-handshake

Изменить свойства базы данных и таблицы

ALTER DATABASE db_name
CHARACTER SET utf8
DEFAULT CHARACTER SET utf8
COLLATE utf8_general_ci
DEFAULT COLLATE utf8_general_ci
; 

ALTER TABLE tbl_name
DEFAULT CHARACTER SET utf8
COLLATE utf8_general_ci
;

Вызовите SETNAMES и т. Д. Сразу после открытия соединения mysql.

$q="SET NAMES 'utf8'";
$r=mysql_query($q);
mysql_query("SET CHARACTER SET utf8");

Но, похоже, ничего не работает.Пожалуйста, помогите

1 Ответ

1 голос
/ 08 февраля 2012

Проверьте, отображает ли браузер страницу в формате UTF-8. Попробуйте добавить:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> на <head> вашей HTML-страницы.

Также $q="SET NAMES 'utf8'"; должно быть $q="SET NAMES utf8"; (без кавычек)

...