✅ Новости WEB и WordPress, темы, плагины. Здесь мы делимся советами и лучшими решениями для веб-сайтов.

Как преобразовать GB2312 (или другие символы, отличные от ANSI) в кодировку UTF-8 (как MySQL, так и файловая кодировка)

113

Мой первый сайт steakovercooked.com появился в 2006 году (9 лет назад). И в то время я мало что знал о кодировке/кодировке файлов, а также UTF-8 не был так популярен для веб-страниц в то время. В наши дни UTF-8 становится настолько популярным, т.е. WordPress использует кодировку UTF-8 на всем сайте, так что вы можете без проблем отображать практически любой язык на одном сайте.

Как преобразовать GB2312 (или другие символы, отличные от ANSI) в кодировку UTF-8 (как MySQL, так и файловая кодировка)

UTF-8-ascii-iso-8859-1

Кодовая страница всех файлов (PHP, HTML, CSS и некоторых других файлов с открытым текстом) была в основном на кодовых страницах ANSI, а китайские символы закодированы многобайтно. Чтобы отобразить эти символы (в кодировке ANSI) в браузере, вам нужно поместить их между тегом заголовка в HTML, чтобы браузеры могли понять:

В HTML5 вы можете написать гораздо более короткий метод:

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

Преобразование файлов (ANSI) в UTF-8

Прежде чем изменить метазаголовок на:

Вам нужно будет преобразовать файлы в кодировку UTF-8. Есть много способов сделать это. Самый простой способ – использовать блокнот для сохранения в кодировке «UTF-8».

Как преобразовать GB2312 (или другие символы, отличные от ANSI) в кодировку UTF-8 (как MySQL, так и файловая кодировка)

блокнот-преобразовать-в-utf-8

Если у вас много файлов, вы можете сделать это с помощью утилиты iconv в Linux (VPS Server ). Следующий сценарий (сохраненный в имени файла, например, toUTF) преобразует один файл в UTF-8.

#!/bin/bash # https://helloacm.com   if [ "$#" -ne 1 ] ||! [ -r "$1" ]; then     echo "Usage: $0 file1"     exit 1 fi   x=`file -bi $1 | grep 'utf' | wc -l` if [ $x -eq 1 ]; then   echo "$1 already converted" else   echo converting $1 to UTF8   iconv -f "gb2312" -t "UTF-8" $1 -o $1 fi

Нам нужно избегать двойного преобразования, чтобы предотвратить возможные проблемы. Программа file -bi $1 | grep 'utf' | wc -lпроверит, был ли файл уже закодирован в UTF-8. Команда iconv -f «gb2312» -t «UTF-8» $1 -o $1 преобразует файл в UTF-8 из gb2132 (измените это соответствующим образом).

Теперь мы можем зациклить все файлы с расширениями *.php в текущем каталоге и во всех подкаталогах:

for x in `find. -type f -name "*.php"`; do toUTF $x done

Преобразование базы данных MySQL в UTF-8

В моем случае все мои предыдущие базы данных mysql по умолчанию имеют кодировку ANSI (сопоставление latin1_swedish_ci ), она повреждается в современных браузерах, если есть символы GB2312 (многобайтовые). Например, PhpMyAdmin имеет кодировку UTF-8, и символы ANSI/GB2312 будут отображаться в браузере с искажениями.

Чтобы сохранить эти данные в UTF-8, самый простой способ — экспортировать таблицу (рекомендуется phpMyAdmin) в файл SQL; убедитесь, что вы экспортируете его, используя iso 8859-1 (полный охват английского языка). ISO 8859-1 также известен как ANSI, но символы GB2312 могут храниться как многобайтовые строки. Если вы откроете SQL в блокноте, вы все равно увидите китайские иероглифы, вам просто нужно сохранить кодировку «UTF-8».

Как преобразовать GB2312 (или другие символы, отличные от ANSI) в кодировку UTF-8 (как MySQL, так и файловая кодировка)

phpmyadmin

О, еще кое-что перед сохранением в формате UTF-8. Вы должны найти и заменить слово «latin1» на «utf-8» в файле SQL. Затем повторно импортируйте SQL с помощью phpMyAdmin, так что все готово. Все данные будут сохранены и изменены на кодировку UTF-8, а сопоставление будет изменено (для varchar, текста, длинного текста и т. д.) на utf8_general_ci.

Настройки MySQL UTF-8

В PHP вы можете установить кодировку по умолчанию:

  mysql_query("SET NAMES 'utf8'");   mysql_query("SET CHARACTER SET utf8");

Аналогично работает mysql_set_charset :

Вы также можете установить кодировку по умолчанию при запуске сервера MySQL (сохранить накладные расходы функций для вызова вышеуказанных функций). Перейдите к редактированию файла /etc/mysql/my.cnf и перезапустите сервер mysql, например, sudo service mysql restart. Добавьте в my.cnf следующее :

[client] default-character-set=utf8 [mysql] default-character-set=utf8 [mysqld] collation-server = utf8_unicode_ci init-connect='SET NAMES utf8' character-set-server = utf8

Почему UTF-8?

UTF-8 обрабатывает буквы алфавита 1 байтом (то же самое, что и ANSI), но использует 3 байта для представления 1 китайского символа, а 2 байта используются при кодировании GB2312. Поэтому, если ваши страницы содержат много китайских символов, то ANSI/GB2312 экономит место, однако UTF-8 и ANSI занимают одинаковое место, когда речь идет только о английских буквах.

UTF-8 избавит вас от проблем в будущем. После преобразования в UTF-8 вам не нужно беспокоиться о кодировке или кодировке. UTF-8 более удобен для международных символов, поэтому большинство браузеров знают, как правильно отображать текст. В моем случае мне нужно конвертировать файлы в кодировку UTF-8, потому что мои любимые текстовые редакторы PsPAD и Sublime text не умеют правильно отображать ANSI/GB2312.

Источник записи: helloacm.com

Этот веб-сайт использует файлы cookie для улучшения вашего опыта. Мы предполагаем, что вы согласны с этим, но вы можете отказаться, если хотите. Принимаю Подробнее