netcommons / NetCommons2

NetCommons Version2
17 stars 21 forks source link

文字コードに問題のある *.php #77

Open komuna opened 11 years ago

komuna commented 11 years ago

/html 下の *.php ファイルで,文字コード的に問題のある(かもしれない)ものを二種類見つけました。

[A] BOM 付き UTF-8 になっているもの

html/maple/nccore/db/adodb/lang/adodb-bgutf8.inc.php html/webapp/modules/install/language/chinese/common_insert.data.php html/webapp/modules/install/language/chinese/insert.data.php

おそらく実質的に問題は引き起こしていませんが,規約違反です。

[B] UTF-8 になっていないもの

UTF-8 でないファイルはたくさんあるのですが,それがマズイのかどうかよく分かりませんでした。 PHP って,スクリプト自体の文字コードはどうやって処理系に知れるんですか? 読み込み側で知ってればいい? (Ruby や Python だと「マジックコメント」という第一行のコメントで判定するんですが)

例を挙げると, html/maple/smarty/plugins/modifier.escape.php は EUC-JP でコメントが書かれています。 これは EUC-JP にする必然性はないと思うので,「実質問題を引き起こさないが規約違反」にあたるんでしょうかね。

また,以下のファイルはおそらく ISO 8859-1(かその仲間)で書かれています。 html/maple/includes/pear/PHP/Compat/Function/array_chunk.php html/maple/includes/pear/PHP/Compat/Function/array_search.php html/maple/includes/pear/PHP/Compat/Function/ob_clean.php html/maple/includes/pear/PHP/Compat/Function/ob_flush.php html/maple/includes/pear/PHP/Compat/Function/ob_get_clean.php html/maple/includes/pear/PHP/Compat/Function/ob_get_flush.php html/maple/nccore/db/adodb/adodb-lib.inc.php こちらもコメント内の人名に非 ASCII のラテン文字が使われているだけと思われます。UTF-8 にしない理由は無さそうです。

また,以下のファイルは CP1252 と思われます。 html/maple/nccore/db/adodb/drivers/adodb-oci8.inc.php 年代を表す「2000–2049」「1950–1999」に 0x96 のダッシュが使われているだけのようです。こちらも UTF-8 にしない理由は無さそうです。

一方,以下の 24 ファイルは,それぞれの言語の文字コードで書かれている必然性がありそうです。 html/maple/includes/mail/phpmailer/language/phpmailer.lang-br.php html/maple/includes/mail/phpmailer/language/phpmailer.lang-ca.php html/maple/includes/mail/phpmailer/language/phpmailer.lang-cz.php html/maple/includes/mail/phpmailer/language/phpmailer.lang-dk.php html/maple/includes/mail/phpmailer/language/phpmailer.lang-es.php html/maple/includes/mail/phpmailer/language/phpmailer.lang-fo.php html/maple/includes/mail/phpmailer/language/phpmailer.lang-fr.php html/maple/includes/mail/phpmailer/language/phpmailer.lang-hu.php html/maple/includes/mail/phpmailer/language/phpmailer.lang-no.php html/maple/includes/mail/phpmailer/language/phpmailer.lang-pl.php html/maple/includes/mail/phpmailer/language/phpmailer.lang-ru.php html/maple/includes/mail/phpmailer/language/phpmailer.lang-se.php html/maple/includes/mail/phpmailer/language/phpmailer.lang-tr.php html/maple/nccore/db/adodb/lang/adodb-ar.inc.php html/maple/nccore/db/adodb/lang/adodb-bg.inc.php html/maple/nccore/db/adodb/lang/adodb-ca.inc.php html/maple/nccore/db/adodb/lang/adodb-cz.inc.php html/maple/nccore/db/adodb/lang/adodb-hu.inc.php html/maple/nccore/db/adodb/lang/adodb-pl.inc.php html/maple/nccore/db/adodb/lang/adodb-pt-br.inc.php html/maple/nccore/db/adodb/lang/adodb-ru1251.inc.php html/maple/nccore/db/adodb/lang/adodb-sv.inc.php html/maple/nccore/db/adodb/lang/adodb-uk1251.inc.php html/maple/nccore/db/adodb/lang/adodb_th.inc.php

taca commented 10 years ago

ほとんど通りすがりです。 コードの書式の規約は重要ですが、外部から取り込んだコードをどのように扱うかは検討された方が良いかと思います。

例えば、PEARやphpmailerのような外部から取り込んだコードは、変更が必要な場合の修正は最低限にしておいた方が無難です。外部で新しいリリースが公開されて、それを取り込む場合に同じ変更を繰り返さないといけなかったり、コードの変更(diff)の表示が面倒になったり、といったことが起きます。