• 締切済み

漢字が文字化けします

licht_gkkの回答

回答No.1

テキストファイルといのは「*.txt」を参照しているという事でしょうか。 それであれば単純にブラウザの文字エンコードが判別してくれなかっただけだと思います。 テキストファイルで文字コードを判別させる事は基本的に出来ませんので、ファイル形式を変えて「*.html」等で文字コードを指定する、開く度にブラウザの文字コードを変更する(大体のブラウザではメニューバーの[表示]から[(文字)エンコード]で選択出来るかと思います)くらいの対応しかできないと思います。 余り好ましくありませんが、Windows環境上でテキストファイルをUTF-8で再保存してサーバーにアップすればWindowsで表示させた場合だけ自動判別してくれる可能性はあります。 (WindowsのUTF-8ファイルではUTF-8宣言の見えないコードが含まれる為) Tomcatを再起動させると正しく表示されたのはただキャッシュがクリアされて文字コードが判別されなおした等の理由かと思いますので、そのままだと文字化けが再現する可能性が高いと思います。

Horirin39
質問者

お礼

ご回答ありがとうございます。 拡張子はTXTですが、テキストエディタ(EmEditor)で保存する時にエンコードをUTF-8にして保存し、これをサーバーに入れています。 たしかに、Tomcatの再起動では、数時間後に再び文字化けします。 しかし、もう一台のLinuxサーバー(同じOS、ミドルの環境)では文字化けが発生していません。 ですので、お手上げ状態になっています。 よろしくお願いします。

関連するQ&A

  • 「~」だけ 文字化けする。

    PHP初心者です。 フォームから入力された文字をテキストファイルに保存して、その保存されたテキストファイルを別ページで表示しています。 簡単なメモ帳みたいな感じです。 フォーム画面と入力完了画面は EUC-JPで、 表示している画面はUTF-8です。 表示画面で <ul> <?php $file = "hoge.txt"; $txt = file($file); foreach ($txt as $value){ $value = mb_convert_encoding($value,"utf-8"); echo "<li>".$value."</li>"; } ?> </ul> と記述しています。 全ての文字化けを確認したはけではないのですが、記述内容の 「~」の文字だけ変な文字になっています。 ここに貼り付けても上手く表示されてないのですが「〜」となっています。 何か原因分かる方おられましたら、アドバイスお願いします。

    • ベストアンサー
    • PHP
  • phpMyAdminでCSVファイルをインポートするが文字化け

    MYSQL初心者です。 教えてください。御願いします。 phpMyAdminにて、漢字コードが「Sjis」のCSVファイルをLinuxサーバのMySQLにインポートするのですが、文字化けを起こしてしまい、旨く変換出来ません。多分、「utf8」に変換されているようです。勿論変換時の漢字コードは「sjis」にしております。どなたか助けて下さい。宜しく御願いします。

  • PHPファイル文字化けについて

    linux CentOS3(RedHat Enterprise3)を利用しています。 linuxは文字コードがEUCと認識しております。 そこでwindows上にてPHPファイルを作成、文字コードEUCにて保存し、 ffftpにてlinuxサーバにアップロードし、webページを参照してみました。 PHPファイルは以下の通りです。 <?php echo "こんにちは"; ?> 結果、InternetExplorerを利用し閲覧したところ文字化けにて表示されます。 文字コードは「UTF-8」が選択されています。 もちろん、文字コードを「EUC」に変更すると、 出力されてほしい文字列が表示されます。 これをInternetExplorerにて表示したとき、 文字化けしないような設定に変更したいと考えます。 どのような手順を踏めばよろしいのでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • FTP 文字化け

    FTPを使って、自宅サーバーから友人にファイルを配りたいと思っているのですが 日本語ファイル名が文字化けしていたり、表示自体されません。 FTPサーバーはProFTPd、クライアントはブラウザからダウンロードしようと考えています。 サーバーのOSはvine linux5.4です。 DLする側の文字コードなどを変更しないで文字化けさせない方法はありませんか?? Linux自体のシステムの文字コードを変えればいいのでしょうか? それともファイル名を半角に変更するしかないのでしょうか?? 回答お願いします・・

  • ajaxを使用した場合にPHP出力文字の文字化け

    サーバー側をPHPにしてajaxシステムを作ろうと思っています。 サーバからのデータ取得時にResponseTextを使用しており、ブラウザの表示での文字化けで困っています。 WinXP SP2 IE6.0では、UTF-8なら表示できますがEUC-JPは文字化けします。 しかし、Win2K IE5.0とWinX PSP1 IE6.0では、UTF-8は文字化けし、EUC-JPなら表示されます。 こっちを立てればあちらが立たずという状況で困っています。 また、直接XMLファイルやテキストファイルを作成し、これを読み込むと どのパソコンでも表示することができました。 phpから出力した文字がうまい具合に読めないのです。 ちなみにRespondeXMLを使用する場合、 XMLファイルを直接読み込むと内容を取得できるのですが、 PHPから出力したXMLデータを取得すると何も表示されません。 いい解決方法はないでしょうか。よろしくお願いいたします。 サーバシステム fedoraCore3 Apache 2.0 PHP 4.3.11 php.iniの文字コード設定はEUC-JP用にしています。

  • 文字化けしてしまいます。

    ~の文字が文字化けして、どうしても解決ができません。 どなたかお分かりになる方、アドバイスをよろしくお願いいたします。 PHP5、Xampp、XP の開発環境になります。 実は出勤時間をPCからと携帯からの両方で管理しようと思っています。 データ保存用ファイルは、utf-8のtxtファイルになります。 すべてをutf-8のファイルで作ることができれば、問題は起きてこないわけですが、携帯が かかわってきており、sjisを使わざるを得ません。かといって、すべてのファイルをSJISにするのも これまた、ダメ文字の関係でそれもできません。 そこで、携帯だけはsjisファイルで作っています。このsjisファイルとutf-8ファイルの間で文字化けが おきてしまいます。 出勤時間を読み込んで、10:00~のようにutfの保存用ファイルから読み込んで、mb_convert_encoding でsjisに変換して表示をします。これは、普通に表示になります。 表示されたファイルは携帯のsjisファイルですので、携帯から出勤時間を変更して保存しようとする 場合、今度はsjisからutf-8に変更して保存する必要があります。 そこで、携帯からutf-8の保存用ファイルに更新した内容を保存する場合にmb_convert_encodingを かけて、utf-8に変換しました。一応、mb_detect_encodingを使ってutf-8に変更されていることも 確かめました。 しかし、保存さているデータは、10:00縲 というように~が縲に文字化けしてしまいます。 この文字化けを回避する方法がお分かりの方、ぜひお知恵をお貸しください。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • phpMyAdminの文字化け

    いつもお世話になっております。 phpMyAdminで文字化けをしてしまいます。 文字コードは全てutf-8で統一しております。 (PHPファイル、データベース) (1)MySQLの設定を変更→解決せず -------------------------------------------------- # vi /etc/my.cnf ↓ ---------- ここから追加 ---------- ↓ [mysqld] character-set-server = utf8 collation-server = utf8_general_ci init-connect = SET NAMES utf8 [mysqldump] default-character-set = utf8 [mysql] default-character-set = utf8 ↑ ---------- ここまで追加 ---------- ↑ :wq -------------------------------------------------- (2)phpMyAdminの設定を変更→解決せず -------------------------------------------------- $cfg['DefaultLang'] = 'utf-8'; $cfg['DefaultCharset'] = 'utf-8'; テーブルの照合順序とカラムの照合順序をutf8_unicode_ciに 変更いたしましたが、ダメでした。 -------------------------------------------------- (3)phpからデータベースに接続直後、SET NAME utf-8を実行→解決せず -------------------------------------------------- function db_conn() {  $db_link = @mysql_connect(DB_SERVER, DB_SERVER_USERNAME, DB_SERVER_PASSWORD));  if ($db_link) {   mysql_select_db(DB_DATABASE);   mysql_query('SET NAMES utf-8');   return $db_link;  } } ご教授お願いいたします。 よろしくお願いいたします。 <環境> OS:Red Hat Enterprise Linux ES[ v.4 ] MySQL:4.1.20 PHP:4.3.9

    • ベストアンサー
    • MySQL
  • テキストファイルが文字化けし、エンコード不能に

     システムロケールを英語(英国)に変更したら、デスクトップ上に保存していたテキストファイルが文字化けしました。日本語に戻してもそのままの状態です。  IEでファイルを開き、右クリックでエンコードを選択して日本語(シフトJIS、EUC)に変換してもうまくいきません。  Web上の複数の変換ツール(UnicodeUTF-16やUTF-8を日本語に変換)にテキストを張り付けて変換しても同様です。  大切なファイルの2つが文字化けしたのですが、バックアップしておらず非常に困っています。  どなたか、元の文章を復元する知恵を貸していただけませんか?  一例として、1行目はこのようになっています。数字だけは、残っています。 「@ƒPƒ“ƒR[ƒRƒ€@@@2,205@‰»Ï•i 」  【備考】 ・ロケール変更は、BattleField4というゲームをする際に出るエラーを回避するために行いました。 ・IEでテキストファイルを開き、エンコードにカーソルをあわせると、「Unicode」に丸がついてグレーアウト表示されます。※Unicode(UTF-8)ではありません。

  • 文字コードを確認するには(64bitRedhat)

    あるテキストファイルの日本語が文字化けしてしまったので、 試しにwindowsのクライアントにダウンロードしてIEで開いて確かめたところ、 ユニコード(UTF-8)にて正常に見ることができました。 しかし、Linuxに戻って、ロケールを ja_JP.utf8にしてみてもいぜんとして化けたままです。 どのようにして、Linuxでの文字コードを確認することができるのでしょうか?

  • 文字化け?

    はじめまして。パソコン初心者です。 OSはWindowsME。IE6です。 HITACHIのPriusです。 いつからだったのかはわかりませんが、マイドキュメントなどで、ファイルやなんやらを開くときに、 「右クリック」→「アプリケーションから開く」 ていうのがありますよね? そこでアプリケーションを選択すると、ステータスバーに表示されるアプリケーション名が、文字化けしているんです。すべて漢字で表示されます。 ただ、「プログラムの選択...」は正常に表示されます。 文字化け表示のアプリケーションを選択しても、アプリケーションは正常に起動します。 最近IE6をダウンロードしましたが、これは関係ないと思います。それ以前から文字化けしてたんで。 ご指導の程、よろしくお願いします。