MySQL+PHPでタイ語

ある取引先が、日本のサーバーでタイ語サイトを運用することになった。

もう6年もタイにいるのに、タイ語は読めも書けも話せもしない上に、その会社にはタイ人のプログラマーもいるので、普通なら「じゃあ頑張ってね~」で終わりなのだが、日本のサーバーの契約を代行した関係から、えらいことになってしまった。

DBからの出力が文字化けするのである・・・もちろん出力と言うより、入力時の文字コードの問題だろう。

正直、PHP+MySQLというのは、出来るには出来るが、個人的に好きではないし、ついでに得意でもない。
しかしまあ、某社のタイ人プログラマから「借りちゃった以上何とかしてくれ、じゃないと出来ない」と言われ、渋々調べ始めた。
どうやらこちらのサーバーは、良くは判らないが、マルチバイト文字であるタイ語でMySQLを特段の設定も無く使えるのが普通なようで、彼も文字化けする、などという経験は無かったようだ。

普通、HTMLでのタイ語の charset は「tis620」「windows874」または「utf-8」なのだが、それらを で指定したページから書き込みを行っても、そのサーバーでは文字化けしてしまう。
しかし、同じスクリプトをタイのサーバーにUPすると、確かに何の問題も無い。それでプログラマ氏も困ったというわけだ。

一応サーバー屋さんに訊いてみる・・・「ハァ? 知るかヴォケ」っぽい返事が返って来た。
当たり前か・・・日本のサーバー借りて、タイ語でDB使おうとする物好きなんぞ、オオサンショウウオ並に少ないだろう。

次にぐぐりまくった・・・日本語はもちろん、英語サイトまで調べまくったが、どうにも決め手になるようなもの、一発「これだ!」というものが見当たらない。何か一般的なライブラリとか無いのか、と探したわけだが、どうにも見当たらない。
それでも手掛かりらしいものは掴めてきて、サーバーの仕様も改めて見直し、どうやら .htaccess で何とかするしかないらしい、というところまでは判った。

ここまでで半日、やってられないことこの上なし。
しかもそのことをプログラマ氏にそれを伝えると
「.htaccess ・・・って何?」
・・・ぇ。

気を取り直して、そこから更に約半日悩む。
結局、.htaccess を以下として、めでたく目指す動作が実現出来た。


php_value register_globals 1
php_value output_buffering 1
php_value mbstring.internal_encoding ISO-8859-11
php_value mbstring.http_input pass
php_value mbstring.http_output TIS620
php_value mbstring.encoding_translation 1
php_value mbstring.substitute_character \


・・・正直、要点がよく解らない・・・。
最後の行
php_value mbstring.substitute_character \
に関しては、多分明らかに変だとは判っているが・・・ちゃんと動作したし、影響無いみたいだからいいやw

実は何よりも苦痛だったのは、タイ語が読めないので、テストスクリプト回してみても、文字化けしてるのかOKなのかさえ、ちょっと見ではよく判らないことだった・・・。

2018/04/23(月)
久々にイカGET
2018/04/22(日)
釣らずに大物GET!
2018/04/13(金)
魚っ気はあるんだがなー
Keyword : MySQL,PHP,タイ語,mbstring,Thai,htaccess

CopyRight 2004 - 2018 © Nap.st all right reserved.