プロパティファイルの文字ばけについて

このQ&Aのポイント
  • StrutsでWEBアプリ開発の練習中に、プロパティファイルの文字ばけに遭遇しました。
  • Strutsのvalidatorで入力エラーが発生した場合、application.propertiesにあるメッセージが文字ばけして表示されません。
  • プロパティエディタでファイルを編集すると日本語が意味不明なコードに変換されてしまいます。
回答を見る
  • ベストアンサー

プロパティファイルの文字ばけについて

現在、StrutsでWEBアプリ開発の練習を行っております。 Strutsのvalidatorで入力エラーになった場合、application.propertiesにあるメッセージを画面に表示したいのですが、 native2asciiでもプロパティエディタを使っても日本語が文字ばけします。 日本語を使わないと正しく表示されるため、ファイルは読み込んでいるものと解釈しております。 また、プロパティエディタなどでファイルを編集して開くと、ちゃんと日本語は意味不明なコードに変換されています。 struts-config.xmlには、 <message-resources parameter="aa.bb.application"> のようにメッセージリソースを設定してます(階層構造にしてるのが原因?)。 コンソールを見るとexceptionは出てないようですが、 application_ja.properties not Found application_ja_JP.properties not Found という警告が表示されます。 上記2つのプロパティファイルを作成すると、警告は消えますが相変わらず 文字ばけは直りません。 知識が乏しく何が起きているのかよく理解できません。 いろいろ調査してみたものの、解決方法が見つからず大変困ってます。 どなたか解決方法をご教示ください、お願いします。 以下のような環境で開発しております。 Java1.6 Eclipse3.2 Tomcat6 Struts1.3

  • Java
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • world99
  • ベストアンサー率64% (20/31)
回答No.1

JSPファイルのエンコード設定がされていないことが問題だと思います。JSPファイルの最初に、次の1文を追加して実行してみて下さい。 <%@page contentType="text/html; charset=UTF-8" %> 「$値」の部分は、お使いの環境にあった値を設定して下さい。(UTF-8、Shift-JIS、EUC-JPなど)

msak777
質問者

お礼

回答ありがとうございます。 仰るとおりに実装したら解決しました! <%@page contentType="text/html; charset=UTF-8" %> はコードに記述していたのですが、共通部分としてincludeしていました。 それをやめて、JSPファイルの最初に記述したら文字ばけが直りました。

関連するQ&A

  • Struts propertyファイルについての質問

    Struts propertyファイルについての質問 いつもお世話になっております。 今回ご質問させて頂きたいのはpropertyファイルについてです。 知識不足な点が否めませんが、ご質問させて頂きます。 propertyファイルを作成する際に自分は Message.Resources_ja.sj としてこちらに日本語入力でmessageを記述していきます。 # -- 検索 -- search.title=不動産協会 search.subete=全て 上記のような感じです。 これをnetive2asciiを使い以下のように変換しています。 native2ascii Message.Resources_ja.sj Message.Resources_ja.properties そうするとpropertyファイルが出来る訳ですが、これを eclipseの自分の環境で見ると以下のようになります。 # -- 讀懃エ「 -- search.title=?シウ?シー荳榊虚逕」蜊比シ? search.subete=蜈ィ縺ヲ これの他に同様のファイルをeclipseでアプリケーションから開く→テキストエディターを選択し 開くと以下のように表示されます。 # -- \u8b80\u61c3\uff74\uff62 -- search.title=\ufffd\uff7c\uff73\ufffd\uff7c\uff70\u8373\u698a\u865a\u9015\uff63\u870a\u6bd4\uff7c\ufffd search.subete=\u8708\uff68\u7e3a\uff66 確認したい点としましては (1)上記の順での作業は正しいのか (2)eclepseのデフォルトエディタで開いた場合に、文字化け?しているのは何故か (そもそも変換の仕方が違う?) (3)自分の環境だけなのかわかりませんが、この文字化けしてるpropertyファイルを変更しようとすると 以下のエラーが発生するのは何故なのか 保管が失敗しました java.lang.NoSuchFieldError 上記3点を教えて頂ければ幸いです。 宜しくお願い致します。

    • ベストアンサー
    • Java
  • SAStrutsのapplication_ja.properties

    SAStrutsのapplication_ja.properties SAStrutsのapplication_ja.propertiesについて。 SAStrutsでアノテーションを使用したバリデートチェックで、 エラーの文言のプロパティ部分を日本語で表示するため、 src/main/resourcesのapplication_ja.propertiesに対して、 以下の形式でプロパティ名で定義して、 labels.(プロパティ名)=xxx 実行しているのですが、その設定内容が反映されません。 公式のチュートリアルの設定どおりで、実行しているのですが、 原因を調査しようとして、調べてみたところ、 編集したapplication_ja.propertiesが、 src/main/webapp/WEB-INF/classes配下に、 アップされていないことが分かりました。 HOT deployの機能で、application_ja.propertiesも アップされると認識していたのですが、 どこか設定抜けがあるのでしょうか? ちなみに、struts-config.xmlのmessage-resourcesタグ上には、 以下のように設定しています。 <message-resources parameter="application" factory="org.seasar.struts.util.S2PropertyMessageResourcesFactory"/> 最悪、ファイル自体を手動でコピーしてしまえばいいのですが、 HOT deployで出来ないものかと思い質問させて頂きました。 よろしくお願いします。

    • ベストアンサー
    • Java
  • Struts2 共通プロパティファイルの外部参照方

    現在、Struts2を勉強中の者です。 作成プロジェクトをwarにした際、「commons.properties」ファイルをwar外に配置しておいて、変数の変更を簡単にしたいと考えています。現状はStruts.xmlと同一フォルダ内にいるため正しく読み込めているのですが、どのように設定したら実現できるのか、ご存知の方いましたらご回答をお願い致します。 Struts.xml <!-- アプリケーション共通プロパティファイル名。拡張子は不要。 --> <constant name="struts.custom.i18n.resources" value="commons" /> 不明点などありましたらご質問をお願い致します。

  • Struts2で日本語を定義したメッセージファイルを作成したいです。

    Struts2で日本語を定義したメッセージファイルを作成したいです。 以下の環境でWebアプリケーションを作成しようとしています。 eclipse 3.4 J2SDK 1.6 Tomcat 6.0 Struts 2.0.14 struts.xmlには <constant name="struts.custom.i18n.resources" value="MessageResources" /> <constant name="struts.i18n.encoding" value="Windows-31J" /> と記述しています。 JSPのヘッダ部は <%@ page contentType="text/html; charset=Windows-31J" %> <%@ page pageEncoding="Windows-31J" %> <s:property value="attention"/> と記述しています。(一部抜粋) メッセージファイル(MessageResources.properties)は message.attention=テスト と記述しいています。 "native2ascii"コマンドを使ってメッセージファイルをUnicodeでエンコードしてみました。 eclipse上でエンコードしたメッセージファイルを開くと 「\u30c6\u30b9\u30c8」と表示されてしまいますが JSPには正しく「テスト」と表示されました。 eclipse上でエンコードしたメッセージファイルの編集を行うことは可能でしょうか?

    • ベストアンサー
    • Java
  • プロパティファイルで日本語を扱う

    プロパティファイルに日本語をいくつか定義しておきます。(例えばmessage=あいうえお など)これをResourceBundleでgetStringして表示すると、文字化けしてしまいます。コマンドプロンプトからプロパティファイルをUnicodeエスケープすれば、文字化けしないで表示できるのですが、プログラム上でUnicodeエスケープとかってできるのでしょうか?それともプロパティファイルで日本語を取得する場合は必ずコマンドプロンプトからUnicodeエスケープするしかないのでしょうか?また、他にプロパティファイルでの日本語の取得の仕方がありましたらご教授願います。

    • ベストアンサー
    • Java
  • Javaのプロパティファイルの文字化け対策

    いつもお世話になっております。 一連の質問で大分クリアになって来たのですが、まだ課題が残っています。 xxx.propertiesファイルを作成したとします。 プロパティに日本語を設定しました。 Java上でgetProperties()をすると文字化けしてしまいます。 初歩的な質問で申し訳ありませんが、具体的な対策をご教示願います。 public String getMailSubject() throws MailSendErrorException { String subject = null; try { Properties prop = new Properties(); // プロパティファイルからキーと値のリストを読み込む prop.load(new FileInputStream(this.properties)); subject = prop.getProperty("mail.subject"); } catch (Exception e) { e.printStackTrace(); throw new MailSendErrorException(); } return subject; } 上記のソースでmail.subjectに設定してある日本語文字列を取得したいのですが色々試しましたが上手く行きません。

    • ベストアンサー
    • Java
  • StrutsのValidatorについて

    Struts1.2.7 で開発を始めました。 validator の勉強をしているのですが、リソースファイルの設置場所がわからず困っています。 WEB-INF/struts-config.xml に下記記述をしています。 message-resources parameter="resources.application" この場合は下記のようにリソースファイルを設置すれば良いと思っていますが、 WEB-INF/classes/resources/application.properties うまく動きません。 手元の本には、「クラス/ソースパッケージツリーのresourcesパッケージに作成」とあります。 ValidatorResources not found in application scope under key "org.apache.commons.validator.VALIDATOR_RESOURCES" このようなエラーが別途出力されています。

    • ベストアンサー
    • Java
  • strutsのApplicationResource.propertiesの文字化けについて

    表題の通りstrutsのApplicationResource.propertiesを利用した部分が文字化けしてしまいます 以下にファイルの詳細を記述します。 JSPファイル <%@page contentType="text/html; charset=Shift_JIS" %> <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%> <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%> <html:html> <BODY> <html:form action="/HelloWorld" > <bean:message key="greeting" /><BR> お名前をどうぞ。<BR><html:text property="name" /><BR> <html:submit> <bean:message key="greeting" /> </html:submit> </html:form> </BODY> </html:html> ApplicationResource.propertiesのファイル greeting=こんにちは welcome=ようこそ 状況 「お名前をどうぞ」は正しく表示 keyのgreetingは?±????????と表示 以上のような状態となってしまいます。どなたか解決策をご存じの方はご教授ください

    • ベストアンサー
    • Java
  • struts1.3.10でエラー

    宜しくお願いします。 環境 Win7 eclipse 3.6.1 struts 1.3.10 tomcat 6.0 とあるサイトにあるサンプル(自分とは違うバージョンの環境)を、自分の環境において、そこからstrutsを勉強していこうとしてます。 最初の呼び出し画面index.jspは表示されますが、そこから次の呼び出し先(strutsのAction継承サーブレット)で HTTPステータス 404 - サーブレット Action が利用できません と出ます。 原因を探ろうとeclipseのコンソールを見たところ、 以下のようにエラーが出ていました。 -----------------------------------------------------------------  ・  ・  ・ 情報: 設定記述子 HLgame.xml を配備します 2011/10/31 15:02:35 org.apache.struts.action.ActionServlet initChain 情報: Loading chain catalog from jar:file:/D:/eclipse/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/HLgame/WEB-INF/lib/struts-core-1.3.10.jar!/org/apache/struts/chain/chain-config.xml 2011/10/31 15:02:35 org.apache.struts.util.PropertyMessageResources loadLocale 警告: Resource org/apache/struts/action/ActionResources_ja_JP.properties Not Found. 2011/10/31 15:02:35 org.apache.catalina.core.ApplicationContext log 致命的: Action: null java.lang.NullPointerException at com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.skipChar(XMLEntityScanner.java:1414) at com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl.skipSeparator(XMLDTDScannerImpl.java:2057)  ・  ・  ・ 2011/10/31 15:02:35 org.apache.catalina.core.ApplicationContext log 情報: サーブレット Action を利用不可能にマークします 2011/10/31 15:02:35 org.apache.catalina.core.StandardContext loadOnStartup 致命的: サーブレット /HLgame がload()例外を投げました javax.servlet.UnavailableException at org.apache.struts.action.ActionServlet.initModulePlugIns(ActionServlet.java:880) at org.apache.struts.action.ActionServlet.init(ActionServlet.java:359)  ・  ・  ・ ------------------------------------------------------------- 上記のうち、一番最初の致命的の箇所、 警告: Resource org/apache/struts/action/ActionResources_ja_JP.properties Not Found. について調べてみたのですが、 /HLgame/WebContent/WEB-INF/lib/以下に置いた、struts-core-1.3.10.jarを、 解凍してみたところ、 struts-core-1.3.10\org\apache\struts\actionフォルダがあり、そこに、 ActionResources_ja.propertiesはあったのですが、 ActionResources_ja_JP.propertiesはありませんでした。 struts-config.xmlの <message-resources parameter="・・・"/> は・・・の部分をいろいろ書き換えて試したものの、いずれも、エラー内容は上記のままでした。 他にどこを調べてよいかわからず困っています。 ActionResources_ja_JP.properties についてググってみましたが、参考になるものはありませんでした。 対処方法を考えていただけるとありがたく、 よろしくお願いいたします。

    • ベストアンサー
    • Java
  • htmlには、なぜファイルのプロパティ(概要)がないのですか?

    こんにちは、 windowsXPでコンテキストメニューからプロパティを開くと、概要タブのあるファイルと、ないファイルがあります。 たとえば、秀丸エディタで、txtファイルを作ると、概要が表示されますが、拡張子をhtmlにすると、概要が表示されなくなります。 (.htaccess等でも概要が表示されます。) html拡張子のファイルにタグ付けして検索するために、概要がほしいのですが、どのようにすれば、htmlファイルで概要が表示できるか教えてください。