空の空行についてはよく分からないですが、「~」については、いわゆる「波ダッシュ/全角チルダ」問題でしょう。この波型に見える文字は、実は波ダッシュ (U+301C) と、全角チルダ (U+FF5E) の2種類あります。本来は前者を使うべきなのですが、Microsoft Windows は後者を使います。そして、Windows 向けのフォントセットでは、U+301C に該当する文字が入ってない場合があります。その場合は ? に化けてしまうことがあります。
通常は、全角チルダを入力しても、そのまま全角チルダになります。波ダッシュは波ダッシュのまま保存されるはずです。しかし、XP の IE7 がそのへんで妙な変換をしている可能性がありますね。
1つの方法は、拙作の「Force Wave Dash」を使うことです。ただ、IE7 がどの段階で変換処理をしているかが不明なので、このプラグインでは対応できないかもしれません。
こちらもWinXP/IE7な環境なのですが、文字化け等発生していません。
mbstringやiconv等でUTF-8以外のエンコードの指定がされてたりとかはありませんか?
MySQL の文字セット: UTF-8 Unicode (utf8)
これも気になります。MySQL 4.1 以降では「照合順序」という指定ができましたが、UTF-8 の場合は “utf8_generic_ci” のような表現になります。MySQL のバージョンが 4.0 以前ならば、照合順序という概念はありません。
MySQL のバージョンおよび、作成したデータベースの「照合順序」を調べてもらえますか?
lilyfanさん jyoshidaさん ありがとうございます!
遅くなってしまいましたが回答させていただきます。
「Force Wave Dash」インストールしてみました!
でもだめでした・・。
「~」は ? になってしまいます。
MySQL クライアントのバージョン: 4.1.20 ←であってますか?
MySQL の接続照合順序:utf8_unicode_ci
となっていました。
mbstringやiconv等・・・すみませんググってみたりもしたのですが、わかりませんでした。
もしかして私のサーバでは触れない場所にあるのかもしれません(??)
参考になるかわかりませんが
使用しているサーバーは
WADAXの@Next Style スタンダード・セキュリティパック ブロンズ
http://www.wadax.ne.jp/price/index.html#plan01
です。
他に見るべき場所があったら教えてください。
よろしくおねがいいたします。
MySQL の接続照合順序:utf8_unicode_ci
うーん、通常は utf8_generic_ci を使いますが、unicode でもさほど問題があるとは思えません。でも、念のため、可能ならば utf8_generic_ci に変更してみてください。
あとは、php.ini の mbstring 設定が不正な場合ですね。php.ini が見られるなら mbstring セクションの内容を見てみてください。直接は見られないなら、phpinfo() を見てみてください (具体的な出し方は検索するとすぐ分かるでしょう)。
utf8_general_ci (←geneticじゃない?)にしてみましたが変わりませんでした。
mbstring はEUCでした。
実は話していないことがありまして・・
今回の作業は1からインストールしたのではなく引越しだったのです。
サーバ移転の際にWordPress ME 2.0.7からWordPress2.5日本語版に変えました。
WordPress ME 2.0.7にエクスポート機能がなかったので
DBのエクスポート→インポートという手順で移行しました。
1)新しいサーバに旧環境と同じフォルダ名、接頭語でWordPress2.5日本語版をインストール
2)旧サーバのDBのデータをエクスポート
3)テキストエディタで文字化けしている文字「?」を半角スペースに変換(乱暴ですね)
4)新サーバのDBにインポート
ためしに普通に新規インストールしてみたところ
改行でも~でも文字化けしませんでした。
結局、現在のデータをエクスポート(2.5にはエクスポート機能があったので)
DBを新しくつくって、インポートして・・という作業をして解決させました。
結局原因がわからずじまいなのがとても申し訳ないのですが・・。
何か質問?ありましたら、いってください。
ただ、DBの「utf8_general_ci」が正解だったような気もします。
「utf8_general_ci」にしたあと投稿テストしてみたところ
いくつかのテーブルは「utf8_general_ci」になったのですが
いくつかのテーブルは「UTF-8 Unicode」のままでした。
でも、新規インストールでは、はじめから「utf8_general_ci」としていたので
全てのテーブルが「utf8_general_ci」となっていました。
これがうまくいった原因だったのかもしれません。
いろいろとアドバイスありがとうございました。
utf8_general_ci (←geneticじゃない?)にしてみましたが変わりませんでした。
すいません。”generic” は誤記で「utf8_general_ci」が正解でした。
サーバ移転の際にWordPress ME 2.0.7からWordPress2.5日本語版に変えました。
ひょっとすると、ME 2.0.7 は EUC-JP 運用でしたか? そうだとすると、文字コード変換の絡みで不具合が出たかもしれません。あと、wp-config.php をそのまま持ってきたとすると、ちょっと問題があります (ME の config には mb_internal_encoding('EUC-jp');
という記述があるため)。
utf8_unicode_ci と utf8_general_ci は、検索時に「ひらがなの清音・濁音・半濁音を同一視するか」などの違いがありますが、基本的には UTF-8 なんで、大丈夫のはずです。どちらがいいかは、データベースの使い方によるので何とも言えませんが、ウェブログ用だったら utf8_general_ci の方が素直な動作になるかなという気はします。
wp-config.phpは2.5日本語版のものを使いました。
utf8_general_ci の方が素直な動作になるかなという気はします。
なるほど~。
http://ja.wordpress.org/install/
あたりにそんな一言があってもいいですね。
wp-config.phpをはじめphpはいじらず、DBだけ作り直したら解決したので、
テーブルのどこか(どこ?)が変だったんじゃないかなと思っています。
ほんとうにいろいろとありがとうございました。