UTF-8移行のチートシート

UTF-8の結節:Xでエンコードされたサイトがあり、UTF-8に変換する必要があります
サイトが正しく機能するように、UTF-8に翻訳する必要があるものの短いリストを作成しています。
  1. 上記のプライバシーのMySQLデータベース
  2. mbstringをインストールする
  3. MBstring構成
  4. PHPで安全でないマルチバイト関数を処理する
  5. マルチバイト文字列のhtmlentities()
  6. ヘッダーのコンテンツタイプの確認
  7. バイナリファイルと文字列を確認する




1.上記のプライバシーのMySQLデータベース


サイトがUTF-8で動作する場合、すべてがUTF-8でデータベースにある必要があります。 かなり論理的です。 これを実行して、新しいデータベースを作成します。
CREATE DATABASE db_name
CHARACTER SET utf8
DEFAULT CHARACTER SET utf8
COLLATE utf8_general_ci
DEFAULT COLLATE utf8_general_ci
;

既存のものを変更するには:
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
;


2. mbstringをインストールします



Linux(上記のプライバシーのDebian):#aptitude install php-mbstring


3. mbstring設定


php.inihttpd.confまたは.htaccessで次のことを行います( httpd.confまたは.htaccessの php_valueを渡すことを忘れないでください)。
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



4. PHPでの安全でないマルチバイト関数の処理


スクリプトを適切に機能させるために使用する必要がある関数のリストを次に示します。
メール()mb_send_mail()
strlen()mb_strlen()
strpos()mb_strpos()
strrpos()mb_strrpos()
substr()mb_substr()
strtolower()mb_strtolower()
strtoupper()mb_strtoupper()
substr_count()mb_substr_count()
エレグ()mb_ereg()
エレギ()mb_eregi()
ereg_replace()mb_ereg_replace()
eregi_replace()mb_eregi_replace()
分割()mb_split()




5.マルチバイト文字列のhtmlentities()



php.netを使用した単純なプレースホルダー関数。 シンプルなテキストで十分です。
/**
* Multibyte equivalent for htmlentities() [lite version :)]
*
* @param string $str
* @param string $encoding
* @return string
**/
function mb_htmlentities($str, $encoding = 'utf-8') {
mb_regex_encoding($encoding);
$pattern = array('<', '>', '"', '\'');
$replacement = array('<', '>', '"', ''');
for ($i=0; $i<sizeof($pattern); $i++) {
$str = mb_ereg_replace($pattern[$i], $replacement[$i], $str);
}
return $str;
}


6.ヘッダーのコンテンツタイプの確認



すべてがシンプルです。 いずれかに変更:
header('Content-Type: text/html; charset=UTF-8');


7.バイナリファイルと文字列を確認する


すべてをすべて再接続し、何も忘れないでください=)

チートシート、記事ではありません。

Source: https://habr.com/ru/post/J13969/


All Articles