• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:レーベンシュタイン距離とマッチ率を同時に出したい)

レーベンシュタイン距離とマッチ率を同時に出したい

このQ&Aのポイント
  • EclipseのPHPで任意の単語同士のリーベンシュタイン距離とマッチ率を同時に表示したいです。
  • リーベンシュタイン距離は正しく表示されますが、マッチ率の表示が文字化けしてしまいます。
  • 解決策を教えていただきたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • tomaju
  • ベストアンサー率76% (84/110)
回答No.1

http://okwave.jp/qa/q7084707.html > 縺ィ 蜈ォ この化け方は、UTF-8 の文字列を Shift_JIS とみなして表示しているときに 見かけます。 Eclipse を使ったことがないので、実行結果がどこに出てくるのかわかりませんが もしWebブラウザで見ているなら、ツールとかオプションとかでエンコードを Shift_JIS に変更すれば、文字化けせずに表示されないでしょうか? > echo $Key. ' と ' .$word. ' は ' .intval($percent). '% マッチ('.$c.')'; ここで、出力に先立って Shift_JIS に変換してやれば、とりあえず解消するように思います。 $buf = $Key. ' と ' .$word. ' は ' .intval($percent). '% マッチ('.$c.')'; echo mb_convert_encoding($buf, 'SJIS', 'UTF-8'); ただし o の上に棒のある文字はうまく表示できないかもしれません。 また、出力内容の文字コードが UTF-8 であるにもかかわらず、 HTTPレスポンスヘッダや HTMLのmetaタグの Content-Type で charset=Shift_JIS を宣言している、といった食い違いが考えられるので そちらを charset=UTF-8 にしてもいいかと思います。

walsch
質問者

補足

回答ありがとうございます。 早速、全て試しました。 エンコードは全てUTF-8に設定してありました。 またWebプラウザはShift_JISに設定しました。(むしろ下記出力後に自動的に設定されたような気がしました) >$buf = $Key. ' と ' .$word. ' は ' .intval($percent). '% マッチ('.$c.')'; >echo mb_convert_encoding($buf, 'SJIS', 'UTF-8'); マッチ率にこちらを追加したところ、見事に「縺ィ 蜈ォ」の文字化けが直って、正常に表示されました。 本当にありがとうございます。 しかし、仰った通り、単語の上に記号のある文字はうまく表示できませんでした。 「ō å š ë ā」などのアクセント付き文字は「?」と表示されます。 athとoktōuならば、 「ath と okt?u は 22% マッチ(1)」 という感じです。 (アクセント付き文字↓これらのことですね。) アクセント付き文字の変換表 0.11 http://cosmoshouse.com/tools/acc-conv-j.htm 引き続いて恐縮ではございますが、後見の方ためにも、これらの文字を正常に表示させる方法と、 レーベン距離とマッチ率を「レーベン距離○=○ 、 マッチ率 AとBは○%マッチ」と各々で見栄え良く表示させる方法を御教授いただけたら幸いに存じ上げます。 (後者は、レーベン全ての出力結果の表示後に、マッチ率全て出力結果の表示と、別途分けて出力することしかできないのであれば、それでも構いません。もしできるならまとめて表示させたいです。 アクセント付き文字のエンコードについてだけでも、御存じの方がいらっしゃいましたら補足回答のほど、よろしくお願い申し上げたいです。)

その他の回答 (1)

  • tomaju
  • ベストアンサー率76% (84/110)
回答No.2

お返事が遅くなってしまいすみません。 UTF-8 であればアクセント付文字を表示できそうです。 >$buf = $Key. ' と ' .$word. ' は ' .intval($percent). '% マッチ('.$c.')'; >echo mb_convert_encoding($buf, 'SJIS', 'UTF-8'); この SJIS への変換は止めて、元に戻しましょう。 echo $Key. ' と ' .$word. ' は ' .intval($percent). '% マッチ('.$c.')'; そして、ブラウザへの出力を始める前、 すなわち、 foreach($text as $row) { の前あたりに、 header('Content-Type: text/html; charset=utf-8'); を書いてみてください。

walsch
質問者

お礼

改めてありがとうございます! そしてこちらこそお礼までの期間が空いて、誠に申し訳ございませんでした。 おかげ様で、無事アクセント文字も読み込むことができました! 本当に助かりました! 重ねまして御礼申し上げます!

関連するQ&A