この操作にはログインが必要です
セッションにXCLと違う文字コードを保存すると化けor落ちることがある
投稿者: kisara_icy | 投稿日時: 2008-6-23 22:44 | 閲覧: 7066回
外部認証モジュールのOpenIDの日本語XRI対応中にハマったことです。
不具合というほどではないと思うので、注意喚起程度の意味合いで。
MySQL のテーブルに DEFAULT CHARSET=utf8 などと文字コードが指定してある状態で XOOPS 内で使用されている文字コードと違う文字列をセッション変数に保存すると文字化もしくは、エラーで落ちますね。
(ただし、XCLの通常インストールではテーブルに文字コードが指定されることは少ないはず)
うちで再現した状況です。
・MySQL のテーブルで DEFAULT CHARSET=utf8
・XCLの文字コードがEUC-JP
・セッションにUTF-8文字列を保存
XCL は set names ... としてクライアントの文字コードを指定している状態なので、MySQL内で変換しようとしてコケています。このとき文字化けもしくはエラーで落ちてしまいます。
そもそもテーブルに文字コードが設定されている上にセッションに XCL 内部コードと違うものを保存する機会は少ないと思いますので結構レアなケースでしょう。
不具合というほどではないと思うので、注意喚起程度の意味合いで。
MySQL のテーブルに DEFAULT CHARSET=utf8 などと文字コードが指定してある状態で XOOPS 内で使用されている文字コードと違う文字列をセッション変数に保存すると文字化もしくは、エラーで落ちますね。
(ただし、XCLの通常インストールではテーブルに文字コードが指定されることは少ないはず)
うちで再現した状況です。
・MySQL のテーブルで DEFAULT CHARSET=utf8
・XCLの文字コードがEUC-JP
・セッションにUTF-8文字列を保存
XCL は set names ... としてクライアントの文字コードを指定している状態なので、MySQL内で変換しようとしてコケています。このとき文字化けもしくはエラーで落ちてしまいます。
そもそもテーブルに文字コードが設定されている上にセッションに XCL 内部コードと違うものを保存する機会は少ないと思いますので結構レアなケースでしょう。


