グローバル設定で日本語が消される 【解決済み】
グローバル設定で日本語が消される 【解決済み】
1.0.5J-r2 をはじめてインストールしたのですが、
サイト名やメンテナンス中メッセージ等、
グローバル設定で日本語を入力して保存しても、記録されない。
という現象が起こっています。
半角英字だけだと問題なく記録されますが、
日本語を入力すると、それ以降が消えてしまいます。
リソースの作成等では、日本語でも問題ありません。
引き続き調べてみますが、
何か思い当たる事などあれば、教えてていただけるとありがたいです。
よろしくお願いいたします。
MODx:1.0.5J-r2
PHP:5.3.0
MySQL:5.1.40
サイト名やメンテナンス中メッセージ等、
グローバル設定で日本語を入力して保存しても、記録されない。
という現象が起こっています。
半角英字だけだと問題なく記録されますが、
日本語を入力すると、それ以降が消えてしまいます。
リソースの作成等では、日本語でも問題ありません。
引き続き調べてみますが、
何か思い当たる事などあれば、教えてていただけるとありがたいです。
よろしくお願いいたします。
MODx:1.0.5J-r2
PHP:5.3.0
MySQL:5.1.40
▼ウェブ屋のCMS→modxヒキダス流(備忘録)
http://d.hatena.ne.jp/hikidas_ikeda/
http://d.hatena.ne.jp/hikidas_ikeda/
Re: グローバル設定で日本語が消される
すみません。以下の設定で解決しました。
--------
php_value mbstring.internal_encoding UTF-8
--------
--------
php_value mbstring.internal_encoding UTF-8
--------
▼ウェブ屋のCMS→modxヒキダス流(備忘録)
http://d.hatena.ne.jp/hikidas_ikeda/
http://d.hatena.ne.jp/hikidas_ikeda/
Re: グローバル設定で日本語が消される
system_settings・site_contentそれぞれのtableのデフォルトエンコード(というか照合順序)の設定はどうなってるか分かりますか?そこが合ってるとしたら(合ってると思う)、プロセッサの処理が両者で微妙に違う可能性がありますね。
管理画面の「ヘルプ」→「support」のタブで、「mbstring」と「MySQLの文字コード情報」がどうなっているか教えていただいてよいでしょうか。こちらで再現できれば修正してみます。
管理画面の「ヘルプ」→「support」のタブで、「mbstring」と「MySQLの文字コード情報」がどうなっているか教えていただいてよいでしょうか。こちらで再現できれば修正してみます。
Re: グローバル設定で日本語が消される
どちらも「utf8_general_ci」です。yama さんが書きました:system_settings・site_contentそれぞれのtableのデフォルトエンコード(というか照合順序)の設定はどうなってるか分かりますか?そこが合ってるとしたら(合ってると思う)、プロセッサの処理が両者で微妙に違う可能性がありますね。
以下のようになっています。yama さんが書きました:管理画面の「ヘルプ」→「support」のタブで、「mbstring」と「MySQLの文字コード情報」がどうなっているか教えていただいてよいでしょうか。こちらで再現できれば修正してみます。
※ヘルプ > support さんが書きました:mbstring
mbstring.detect_order auto
mbstring.encoding_translation 1
mbstring.func_overload 0
mbstring.http_input auto
mbstring.http_output EUC-JP
mbstring.internal_encoding UTF-8
mbstring.language Japanese
mbstring.strict_detection 0
mbstring.substitute_character
MySQLの文字コード情報
接続メソッド SET CHARACTER SET
文字セット照合順序 utf8_general_ci
character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
character_set_results utf8
character_set_server latin1
character_set_system utf8
character_sets_dir /usr/share/mysql/charsets/
mbstring.internal_encodingは、サーバの設定では「EUC-JP」です。
(.htaccessで「php_value mbstring.internal_encoding UTF-8」設定済み)
mbstring.substitute_characterは「no value」です。
よろしくお願いいたします。
▼ウェブ屋のCMS→modxヒキダス流(備忘録)
http://d.hatena.ne.jp/hikidas_ikeda/
http://d.hatena.ne.jp/hikidas_ikeda/
Re: グローバル設定で日本語が消される
設定しない場合は、ここの値はどうなってますか?kazuike さんが書きました:(.htaccessで「php_value mbstring.internal_encoding UTF-8」設定済み)
Re: グローバル設定で日本語が消される
書き方が悪かったですね。
「EUC-JP」です。
「EUC-JP」です。
▼ウェブ屋のCMS→modxヒキダス流(備忘録)
http://d.hatena.ne.jp/hikidas_ikeda/
http://d.hatena.ne.jp/hikidas_ikeda/
Re: グローバル設定で日本語が消される
ありがとうございます。おかげですぐにポイント特定できました(internal_encodingの件は失礼しました)。encoding_translationが有効になってるので、POSTで受け取った値によってサーバ側の判定がブレて、たまたま文字化けが起きるようです。スクリプト側で対応するほうがフレンドリーだと思うので、何か考えてみます。
※29日追記
たまたまではなくPOSTで受け取った時点で明示的に変換されるようです
※29日追記
たまたまではなくPOSTで受け取った時点で明示的に変換されるようです
Re: グローバル設定で日本語が消される
検証をお願いしてよいでしょうか。.htaccessを元のイレギュラーな状態に戻したうえで、
上記のコードを /manager/includes/protect.inc.php の末尾あたりにでも追記して確認してみていただけますでしょうか。これでうまくいくようであれば、もう少しきっちりと書き直します。
コード: 全て選択
foreach($_POST as $k=>$v)
{
$_POST[$k] = mb_convert_encoding($v,'UTF-8');
}
Re: グローバル設定で日本語が消される
投稿画面と処理を揃えるアプローチもあります
/manager/actions/mutate_settings.dynamic.php 内の上記の部分を
このように書き換えます。
(こっちのほうがよいと思います)
スニペット・チャンクなど他にもありそうなので、この機会に見直してみます
コード: 全て選択
<form name="settings" action="index.php?a=30" method="post">
コード: 全て選択
<form name="settings" action="index.php?a=30" method="post" enctype="multipart/form-data">
コード: 全て選択
<form name="settings" action="index.php?a=30" method="post" enctype="text/plain">
スニペット・チャンクなど他にもありそうなので、この機会に見直してみます
Re: グローバル設定で日本語が消される
yamaさん
ありがとうございます。
私としても、テストしたいのは、やまやまなんですが、
今となっては、ちょっと状況が厳しいです。
もしか、テストできましたら、報告させていただきます。が…
ありがとうございます。
私としても、テストしたいのは、やまやまなんですが、
今となっては、ちょっと状況が厳しいです。
もしか、テストできましたら、報告させていただきます。が…
▼ウェブ屋のCMS→modxヒキダス流(備忘録)
http://d.hatena.ne.jp/hikidas_ikeda/
http://d.hatena.ne.jp/hikidas_ikeda/