Intereting Posts
jQuery Mobile: отправка данных с одной страницы на другую Как создать навигационное меню для cms? открыть электронную почту php, используя imap, давая мне эту ошибку Сообщение: imap_open () : Не удалось открыть поток {imap.gmail.com:993/imap/ssl}INBOX Какова таблица лидеров лучшей практики с php, mysql, memcached? PHP-код для создания безопасного URL-адреса? Загрузка файла не в / tmp Форсирование диалога «Сохранить как» через jQuery GET Блокирование входа пользователя с определенным уровнем разрешений, а затем отображение предупреждений, чтобы сообщить им, почему Как проверить регулярное выражение с помощью PHP MySQLi эквивалент mysql_result ()? Как использовать $ this вне класса? ftp_get (): Не удается открыть файл1: нет такого файла или каталога в PHPExcel: Как проверить, действителен ли файл XLS или нет? Предупреждение: невозможно изменить информацию заголовка При использовании уникальной буквенно-цифровой строки для короткого URL-адреса лучше ли хранить созданную строку в базе данных или кодировать / декодировать «на лету»?

Как правильно обрабатывать международный характер в PHP / MySQL / Apache

Мне нужно создать приложение на PHP, которое может обрабатывать все символы Unicode во всех местах – редактировать поля, статический HTML, базу данных. Может ли кто-нибудь рассказать мне полный список всех параметров / функций, которые необходимо установить / использовать для достижения этой цели?

апаш

Кодировка сервера должна быть либо не установлена, либо установлена ​​в UTF-8. Это делается с помощью директивы apache AddDefaultCharset. Это может перейти на виртуальный хост или общий файл (см. Документацию).

AddDefaultCharset utf-8 

MySql

  • Установите для сортировки базы данных UTF-8
  • Установите кодировку соединения. Это можно сделать, как сказал кто-то с mysqli_set_charset, или отправив это сразу после подключения:
     SET NAMES 'utf8' COLLATE 'utf8_unicode_ci'

PHP

1- Вы должны установить HTML-кодировку страницы UTF-8, через метатег на странице или через заголовок PHP:

     <meta http-equiv = "Content-Type" content = "text / html; charset = utf-8" />
 -или-
     header ('Content-type: text / html; charset = utf-8');

2- Вы всегда должны использовать версию функций, связанных с строкой mb *, например, mbstrlen вместо strlen, чтобы получить длину строки строки.

Это должно позволить вам иметь UTF-8 всюду, со страниц на данные. Тест, который вы можете выполнить: щелкните правой кнопкой мыши в любом месте страницы с помощью firefox и выберите «Показать информацию о странице». Эффективная кодировка указана на этой странице.

Важно: вы также должны убедиться, что используете UTF-8 в качестве кодировки соединений при подключении к Mysql из PHP!

Для mysqli это делается

 mysqli_set_charset($dblink, 'utf-8') 

http://de3.php.net/manual/en/mysqli.set-charset.php

Некоторые вещи вам нужно будет изучить: –

PHP

Убедитесь, что ваш контент отмечен как utf-8:

default_charset = "utf-8"

Установите mbstring. Вы можете найти его здесь

Убедитесь, что вы используете utf-8 между PHP и MySQL.
Вызвать mysql_set_charset("utf8"); (или использовать SQL-запрос SET NAMES utf8 )

апаш

Вы также устанавливаете Content-Type: ваших страниц здесь с чем-то вроде этого

AddDefaultCharset utf-8

MySQL

Убедитесь, что все ваши таблицы используют utf8 Collation utf8_general_ci; например

 ALTER DATABASE mydb CHARACTER SET utf8; 

в заключение

Наконец, тестовые материалы с интересными примерами unicode, такими как эти

9 (͡ ๏ ̯͡ ๏) 6

Более полезная информация, когда я пробовал это …

Вам рекомендуется использовать либо HTTP-заголовок, либо мета-элемент, чтобы установить кодировку на ваших страницах в utf-8. W3C рекомендует вам обоим. И мета-элемент должен появиться как можно раньше на странице. (Все символы перед мета-элементом должны быть ASCII, которые в основном идентичны почти во всех кодировках символов. Некоторые браузеры будут перезапускать рендеринг страниц, когда они сталкиваются с метатегом, что является еще одной хорошей причиной для его раннего).

Кроме того, на всех формах, принимающих пользовательский ввод, следует установить атрибут accept-charset="utf-8" . Как правило, браузеры, отправляющие данные POST, по умолчанию будут кодировать страницу, но это не вредно.

Я использовал упомянутые методы, и они отлично работали. До недавнего времени, когда мой провайдер обновил PHP до 5.2.11 и MySQL до 5.0.81-сообщества. После этого изменения символы Юникода были правильно извлечены из базы данных, но все обновления были повреждены, а символы Юникода заменялись символом «?».

Решение заключалось в использовании:

 mysql_set_charset('utf8',$conn); 

Это было необходимо, хотя мы использовали:

 SET NAMES utf8 SET CHARACTER SET utf8 

Кроме того, поскольку мы использовали ADOdb, нам нужно было найти ручку подключения PHP. Мы использовали следующее утверждение:

 mysql_set_charset('utf8',$adoConn->_connectionID);