Предисловие:
Честно говоря,
Сандалс также считает, что UTF8 — это хорошо…
В конце концов, показывать Китай, Японию и Южную Корею на одном экране очень привлекательно для жителей Восточной Азии...
(Конечно, преимущества этим не ограничиваются...)
Не только веб-программы…
Ядра многих приложений начинают использовать кодировку Unicode...
Цель очевидна: поддержка многоязычного дисплея...
Все программное обеспечение Microsoft основано на Unicode...
Таким образом, японское программное обеспечение может нормально отображаться на вашей китайской XP...
А китайский 98 приведет к искажению символов при установке другого языкового программного обеспечения в ядро GB...
Что касается UTF8,
Можно сказать, что это ветвь Unicode.
Он использует три байта для сохранения китайского иероглифа...
(Юникод использует четыре байта)
Прикладное программное обеспечение коллективно перешло на Unicode...
Разве нам не разрешено использовать UTF8 в веб-приложениях?
В этой статье Sandals попытается представить PHP-программирование в кодировке UTF8 во всех возможных аспектах...
А почему "китайский" вводится отдельно...
Во-первых, потому что на самом деле нет необходимости учитывать UTF8, когда дело касается английского языка…
Если только вы не планируете создавать многоязычную систему...
(Хочу пожаловаться: сейчас иностранцы вообще не обращают внимания на этот вопрос при написании программ...)
Во-вторых, методы обработки многобайтовых языков, таких как Китай, Япония и Корея, под кодировкой UTF8 на самом деле очень похожи...
Просто следуйте за тыквой и нарисуйте совок...
Хорошо... давайте начнём с обработки базы данных...
=========================================
Подключение к базе данных
Многие люди обнаружат, что данные испорчены, когда они просто обновятся до Mysql 4.1...
Фактически, это потому, что Mysql поддерживает наборы символов, начиная с 4.1...
И набор символов по умолчанию - UTF8...
(Полное доказательство важности интеграции с международными стандартами... Хе-хе...)
Раньше мы в основном использовали кодировку utf8 или GBK...
Конечно, выходные данные искажены...
Чтобы решить искаженный код...
Вы должны сообщить программе, какие данные кодировки нужно получить...
Мы предполагаем, что ваша предыдущая база данных была в кодировке utf8...
mysql_query('SET CHARACTER SET utf8') или die("Query error: " . mysql_error());
перед запросом.
Разумеется, поскольку это требуется только для 4.1 и выше,
Поэтому мы можем добавить решение:
$mysqlversion = $db->query_first("SELECT VERSION() AS version");
if ($mysqlversion['version'] >= '4.1')
{
mysql_query('SET CHARACTER SET utf8') или die("Запрос не выполнен: ". mysql_error());
}
Таким образом, независимо от того, какая кодировка Mysql используется по умолчанию, вы можете получить к ней обычный доступ...
(Неважно, вносите ли вы депозит в течение периода выживания, вносите депозит на определенный период или даже снимаете небольшие суммы...)
Однако все являются международными...
Вы все еще используете utf8?
Как его перекодировать?
кроме……
Что делать, если во время обновления данных появляются искаженные символы?
Салат!
Давайте послушаем разбивку в следующий раз...
========================================= === =
Данные необходимо обновить до 4.1
...
Сначала нужно экспортировать...
Сказать, что иностранцы действительно безответственны...
Предыдущий метод экспорта всегда терял некоторые китайские иероглифы...
Например, замените «Я люблю твою маму» на «Я люблю тебя»…
(Обычно последнее слово фрагмента данных теряется)
Все это на поколение позади...
(По словам сестры Гранат: «Сам факт такого бунтарского поступка действительно волнует»…)
Чтобы защитить свое хрупкое сердце...
Также для того, чтобы сохранить традиционную китайскую этику и мораль...
Вы можете изменить поля, данные которых содержат китайские символы, на двоичную кодировку...
Конкретный метод...
Вы можете запустить этот оператор:
ALTER TABLE `имя таблицы` CONVERT TO CHARACTER SET двоичный файл;
Таким образом, такие поля типов символов, как:
CHAR, VARCHAR и ТЕКСТ
будет преобразован в
ДВОИЧНЫЙ, ВАРБИНАРНЫЙ и BLOB
Затем экспортируйте и импортируйте в среду 4.1...
Конечно, последняя утомительная задача:
Нужно поменять их типы обратно...
Есть обновление до 4.1...
Конечно, бывают и понижения...
Как понизить версию? ? ?
Сандалии для похода в туалет...
И, пожалуйста, перейдите на следующую страницу...
====================================== ==== ===
Данные были понижены с версии 4.1.
Некоторые люди обнаружили, что файлы SQL, экспортированные из версии 4.1, невозможно импортировать в программы более ранней версии...
На самом деле проблема очень проста...
А Mysql уже всё за нас продумал...
Пожалуйста, добавьте параметр --совместимость при экспорте...
Мы предполагаем, что ваша база данных имеет кодировку utf8...
И целевая версия базы данных — 4.0…
Затем напишите это в командной строке:
Shell>mysqldump --user=имя пользователя --пароль=пароль --совместимость=mysql40 --default-character-set=utf8 база данных > db.sql
Экспортированный таким образом SQL-файл можно успешно импортировать в базу данных более ранней версии...
Часть базы данных наконец готова...
Но как нам следует уделять внимание программированию на PHP?
Я вынужден попросить вас перейти на следующую страницу...
http://www.knowsky.com
============================================
Кодировка файлов PHP
Необходимо ли конвертировать все файлы PHP в кодировку UTF8?
Сандалии говорят вам НЕТ...
скажем так...
Если файл содержит китайские иероглифы, которые необходимо отобразить...
Его необходимо преобразовать в кодировку UTF8...
Приведем пример:
// Я сандалия
время эха();
Хотя в приведенном выше коде есть код...
Но раз оно есть в аннотации...
Нет выхода...
Так что эту страницу не нужно конвертировать в формат UTF8...
Другой пример:
echo "I am Sandals";
Очевидно, это вывод китайских символов...
Надо просто конвертировать в UTF8...
Конечно, многие программы сейчас используют технологию шаблонов (языковых пакетов)...
Вы не видите никаких символов для вывода в программе (файл неязыкового пакета)...
Таким образом, нам нужно всего лишь преобразовать файл языкового пакета в кодировку UTF8...
(В этом преимущество языковых пакетов... Ахахахахаха...)
'http://www.knowsky.com
===============================================
Китайский перехват UTF8
, поскольку UTF8 использует три байта...
Таким образом, традиционная функция substr бесполезна...
Многие эксперты написали функции перехвата китайских символов UTF8...
Вот некоторые из них:
1. Сначала вычислите, а затем возьмите
/**
* Автор: Манекен |
* Электронная почта: [email protected] | hotmail.com
*Создать: 200512
* Использование: echo join('', String::subString_UTF8('Китайские иероглифы', 0, 1));
*/
ini_set('display_errors', 1);
error_reporting(E_ALL ^ E_NOTICE);
класс Строка {
функция subString_UTF8($str, $start, $lenth)
{
$лен = стрлен($стр);
$r = массив();
$п = 0;
$м = 0;
for($i = 0; $i < $len; $i++) {
$x = substr($str, $i, 1);
$a = base_convert(ord($x), 10, 2);
$a = substr('00000000'.$a, -8);
если ($n <$start){
если (substr($a, 0, 1) == 0) {
}elseif (substr($a, 0, 3) == 110) {
$я += 1;
}elseif (substr($a, 0, 4) == 1110) {
$я += 2;
}
$п++;
}еще{
если (substr($a, 0, 1) == 0) {
$r[] = substr($str, $i, 1);
}elseif (substr($a, 0, 3) == 110) {
$r[] = substr($str, $i, 2);
$я += 1;
}elseif (substr($a, 0, 4) == 1110) {
$r[] = substr($str, $i, 3);
$я += 2;
}еще{
$r[] = '';
}
if (++$m >= $lenth){
перерыв;
}
}
}
вернуть $р;
} // Конец subString_UTF8
}//Конечная строка
echo join('', String::subString_UTF8('Китайские иероглифы', 0, 1));
2. Я думаю, что очень умно сначала разрезать сандалии, а потом уже отрезать их...
Используйте традиционную функцию перехвата, чтобы сначала отсечь...
Затем определите, разделен ли один китайский иероглиф...
Если это так... то смиритесь с этим...
Важно отметить, что третий параметр функции substr должен быть больше 3...
А почему ты не носишь сандалии, можешь объяснить?
// Функция обрезки для удаления последнего символа строки utf-8
// следуя инструкциям на http://en.wikipedia.org/wiki/UTF-8
// дотанн
// использование: $str = utf8_trim(substr($str,0,50));
функция utf8_trim($str) {
$лен = стрлен($стр);
for ($i=strlen($str)-1; $i>=0; $i-=1){
$hex .= ' '.ord($str[$i]);
$ch = ord($str[$i]);
if (($ch & 128)==0) return(substr($str,0,$i));
if (($ch & 192)==192) return(substr($str,0,$i));
}
возврат ($str.$hex);
}
$str = 'Китайские иероглифы';
echo utf8_trim(substr($str,0,3));
3. Есть и другие методы,
Например, 007pig — это функция, написанная в китайской версии нашего vBulletin...
Коротко и мило...
Неудобно выкладывать исходный код...
Прости, Птица...
Сегодня я закончу писать здесь...
Есть еще такие вопросы, как перекодирование, о которых не написано...
В последнее время занят...
Продолжайте организовывать, когда у вас будет время...
http://www.quchao.com/?p=6&pp=1