サポート » 使い方全般 » 空の改行 と 「~」 が文字化けする

  • 解決済 yyyasuooo

    (@yyyasuooo)


    WordPress2.5日本語版を使っています。

    XPのIE7で投稿すると
    ほとんどの文字は文字化けしないのですが
    空の改行や「~」が文字化けして「?」となってしまいます。
    空の改行の部分のコードは<p>?</p>となっていました。
    ちなみに、XPのFirefoxでは空の改行は無視され、「~」は「?」となりました。

    utf-8で動かしています(つもりです)。

    ページとフィードの文字コード「UTF-8」

    MySQL の文字セット: UTF-8 Unicode (utf8)

    テーマファイルの文字コードはUTF-8Nで改行コードはLFです。
    (CR+LFでもダメでした)

    htmlの先頭部分の記述

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head profile="http://gmpg.org/xfn/11">
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

    考えられる原因、調べるべき箇所を教えていただければと思います。

    よろしくおねがいいたします。

8件の返信を表示中 - 1 - 8件目 (全8件中)
  • モデレーター IKEDA Yuriko

    (@lilyfan)

    空の空行についてはよく分からないですが、「~」については、いわゆる「波ダッシュ/全角チルダ」問題でしょう。この波型に見える文字は、実は波ダッシュ (U+301C) と、全角チルダ (U+FF5E) の2種類あります。本来は前者を使うべきなのですが、Microsoft Windows は後者を使います。そして、Windows 向けのフォントセットでは、U+301C に該当する文字が入ってない場合があります。その場合は ? に化けてしまうことがあります。

    通常は、全角チルダを入力しても、そのまま全角チルダになります。波ダッシュは波ダッシュのまま保存されるはずです。しかし、XP の IE7 がそのへんで妙な変換をしている可能性がありますね。

    1つの方法は、拙作の「Force Wave Dash」を使うことです。ただ、IE7 がどの段階で変換処理をしているかが不明なので、このプラグインでは対応できないかもしれません。

    こちらもWinXP/IE7な環境なのですが、文字化け等発生していません。
    mbstringやiconv等でUTF-8以外のエンコードの指定がされてたりとかはありませんか?

    モデレーター IKEDA Yuriko

    (@lilyfan)

    MySQL の文字セット: UTF-8 Unicode (utf8)

    これも気になります。MySQL 4.1 以降では「照合順序」という指定ができましたが、UTF-8 の場合は “utf8_generic_ci” のような表現になります。MySQL のバージョンが 4.0 以前ならば、照合順序という概念はありません。

    MySQL のバージョンおよび、作成したデータベースの「照合順序」を調べてもらえますか?

    トピック投稿者 yyyasuooo

    (@yyyasuooo)

    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
    です。

    他に見るべき場所があったら教えてください。
    よろしくおねがいいたします。

    モデレーター IKEDA Yuriko

    (@lilyfan)

    MySQL の接続照合順序:utf8_unicode_ci

    うーん、通常は utf8_generic_ci を使いますが、unicode でもさほど問題があるとは思えません。でも、念のため、可能ならば utf8_generic_ci に変更してみてください。

    あとは、php.ini の mbstring 設定が不正な場合ですね。php.ini が見られるなら mbstring セクションの内容を見てみてください。直接は見られないなら、phpinfo() を見てみてください (具体的な出し方は検索するとすぐ分かるでしょう)。

    トピック投稿者 yyyasuooo

    (@yyyasuooo)

    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」となっていました。

    これがうまくいった原因だったのかもしれません。

    いろいろとアドバイスありがとうございました。

    モデレーター IKEDA Yuriko

    (@lilyfan)

    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 の方が素直な動作になるかなという気はします。

    トピック投稿者 yyyasuooo

    (@yyyasuooo)

    wp-config.phpは2.5日本語版のものを使いました。

    utf8_general_ci の方が素直な動作になるかなという気はします。

    なるほど~。
    http://ja.wordpress.org/install/
    あたりにそんな一言があってもいいですね。

    wp-config.phpをはじめphpはいじらず、DBだけ作り直したら解決したので、
    テーブルのどこか(どこ?)が変だったんじゃないかなと思っています。

    ほんとうにいろいろとありがとうございました。

8件の返信を表示中 - 1 - 8件目 (全8件中)
  • トピック「空の改行 と 「~」 が文字化けする」には新たに返信することはできません。