javadoc定数フィールド値の文字化けについて

このQ&Aのポイント
  • 定数フィールド値にマルチバイト文字を記述すると、javadoc出力で該当の箇所が文字化けしてしまいます。
  • WindowsだとUTF-8のファイルはダメ(LinuxならOK)、JDKのバグ(このバージョンだと大丈夫)など、何かお気づきの点があればご教示ください。
  • javadocコメントはマルチバイト文字で記述することが可能ですが、定数フィールド値にマルチバイト文字を記述すると文字化けしてしまいます。
回答を見る
  • ベストアンサー

javadoc定数フィールド値の文字化けについて

定数フィールド値にマルチバイト文字を記述すると、javadoc出力で該当の箇所が文字化けしてしまいます。 「そもそもWindowsだとUTF-8のファイルはダメ(LinuxならOK)」、「JDKのバグ(このバージョンだと大丈夫)」など、何かお気づきの点があればご教示ください。 [環境] ・OS:WindowsXP SP3 ・JDK:1.5.0_17 [実行したコマンド] javadoc -private -charset Windows-31J -encoding UTF-8 -docencoding Windows-31J -sourcepath [パス] [パッケージ] ※ やりたいことは、「UTF-8」のソースファイルから「Shift_JIS」のjavadocを作成することです。 [Javaソース] ・文字コード:UTF-8 ・改行コード:LF(CRLFでも同じ) ・記述内容  javadocコメントはマルチバイト文字で記述 -> 文字化けしない  定数フィールド値もマルチバイト文字で記述 -> 文字化けする   例)   /** ほげ */   private static final String hoge = "あいうえお";    -> フィールドの概要は文字化けせずに「ほげ」が出力される    -> 定数フィールド値は"\u3042\u3044\u3046\u3048\u304a"が出力される

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

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

  • ベストアンサー
回答No.1

そういう実装の仕様。 #「文字化け」ではないような気がするけど。 http://java.sun.com/j2se/1.5.0/source_license.html から、事前に登録したIDとパスワードを用いてJRLの方を辿り、(SCSLの方はリンク切れ) Download (JRL Source) から、jdk-1_5_0-src-jrl.zipをダウンロード。 \j2se\src\share\classes\com\sun\tools\javadoc \j2se\src\share\classes\com\sun\tools\doclets あたりから追うことができる。 全部読むと疲れそうなので勘で当たりを付ける。 ConstantsSummaryWriterImpl.javaが FieldDocインターフェースのconstantValueExpressions()を呼び出す。 FieldDocインターフェースを実装ているのは多分FieldDocImplで そのコードは大体以下のようになっていて、 http://www.java2s.com/Open-Source/Java-Document/6.0-JDK-Modules-com.sun/tools/com/sun/tools/javadoc/FieldDocImpl.java.htm 118行目から119行目、125行目、132行目と流れて166行目、171行目、177行目と読んでいけば質問者さんなら「当たり前じゃん」って思うと思う。 #自分で改変してビルドするなりご自由に。makefileなんか読んでないけど、オフィシャルなバイナリはexeだからどっかで変換しているんだろう。そこまでやるかは任せる。

crossgate
質問者

お礼

さっそくのご回答、ありがとうございます。 ご教示いただいたソースを観て、そういうツクリになっていることが解りました。 やはりマルチバイト出力したいので、javadoc改を作るか、htmlをコンバートするツールを作るかを考えないといけないようですね。 1.6.0以降でできるなら入れ換えるつもりでしたが、それも駄目だと判って助かりました。 ありがとうございました。

関連するQ&A

  • ■Java AntでJavaDoc生成 日本語が文字化けします・・・

    環境:WIN XP ANT1.7 JDK1.5 ご存知の方ご教授下さい。 sourceがutf-8なので、@1 の用にantスクリプトを書いたところ、指定したdirにhtmlが生成されません。 encoding属性charset属性を、Shift_JISにすると今度はhtmlは生成されたのですが、htmlの日本語が文字化けしてしまいました。 (ソースをmappingしている時点で日本語が文字化けしています。) 解決方法ご存知の方いらっしゃいますでしょうか。 @1 <target name="jdcreate" depends="init,compile"> <javadoc destdir="${out.dir}" verbose="true" version="true" linksource="true" author="true" use="true" windowtitle="Project API" encoding="UTF-8" charset="UTF-8"> ※ant実行後エラー抜粋(encoding="UTF-8" charset="UTF-8"で実行) 抜粋します。 jdcreate: [javadoc] Generating Javadoc [javadoc] パッケージ com.elu.sap.design.one のソースファイルを読み込んでいます... [javadoc] C:\sap\design\one\Dog.java:6: 警告:この文字は、エンコーディング UTF-8 にマップできません。 [javadoc] エラー 2 個 [javadoc] 警告 34 個 BUILD SUCCESSFUL

  • javadoc

    こんばんは! すっごくくだらない質問かもしれないんですが、検索しても見当たらなかったんで…質問させていただきます。 今javadocを作っているのですが、出来上がったjavadocは2バイト文字だけ文字化けしてしまいます。 ソースコードはEUC-JPで作成しているのですが、javadoc生成するときにどこかで文字コードを指定しなくてはいけないのでしょうか? 因みにEclipse上からjavadoc作っています。 意味不明な部分は補足させていただきますので、アドバイスのほう宜しくお願いします。

  • php 文字化け

    MAMPをインストールして、統合開発環境であるAptanaを使用してphpのプログラミンを行いたいのですが、 日本語を出力すると文字化けしてしまいます。 このページ http://sevenbluesea.blog101.fc2.com/blog-entry-19.html を参考にして、php.iniを書き換えて保存し直し、AptanaとMAMPを再起動をしても文字化けは直りませんでした。 実行したいソースのテキスト・ファイル・エンコードはSJISで、 これをUTF-8にすると、ソース自体が文字化けを起こしてしまいます。 ソース自体の記述をUTF-8にしないといけないのでしょうか? 何か解決案や参考ページなどを教えていただけると嬉しいです。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • 文字化け、記号の含まれるフィールド抽出

    アクセス初心者です。 現在6万件ほどの住所と名前のデーターべースから、文字化けしていたり記号が入っているデータを探し出すクエリを作成していますが、なかなかうまくいきません。 1. 文字化けを探し出すことは可能でしょうか? 2. 記号が入っているフィールドを探しだすいい方法は無いでしょうか? 3. 名前のフィールドに文字列に数値が入っているものも抽出したいのです。 皆さんでしたら、どのように記述しますか? ど素人な質問ですみません。 どなたかアドバイスをよろしくお願いします。

  • JavaScriptが文字化けする

    JavaScriptファイルをSJIS、EUC、UTF8を統一したために スクリプト上で var str = "あいうえー"; をUTF16で var str = "\u3042\u3044\u3046\u3048\u30fc"; このように変換をしましたが alert("\u3402");とかですと、文字化けはしないのですが、 innerhtml="\u3402"; のようにやると、文字化けをしてしまいます。 どのようにしたら対処できますでしょうか? もし、対処方法なければ、仕方ないので、コード判別をできるようにと考えています。

  • PHP フォームからのデータが文字化け

    PHPにて簡単な以下のようなアプリを勉強がてら作っています。 1.登録フォームを表示 2.確認画面表示 3.DB(MySQL)にデータ登録 そこで質問なのですが、フォームから入力し確認画面を表示するときに、フォームから入力した文字が文字化けしてしまいます(正確には文字化けする時としない時があります)。 出力ページはSmartyを使っています。 テンプレートはUTF-8を使っており、テンプレート内の文字は文字化けしません。PHPソースもUTF-8で書いてあります。 各PHPソースには mb_language("uni"); mb_internal_encoding("UTF-8"); mb_http_output("UTF-8"); と記述しています。 DB(MySQL)のテーブルはUTF-8にしてあります。 1点気になるのは、某ホスティングサービス上で作っているのですが、PHPinfoで見てみるとmb_internal_encodingはEUC-JPになっています。 今回UTF-8で作りたいのですがどうしたら良いのでしょうか? 環境は、 Apache 1.3.34 / PHP 4.3.7 / MySQL 4.1.21 です。 アドバイスお願いいたします。

    • ベストアンサー
    • PHP
  • 文字化けについて

    <?php //文字化け $a = "あいうえお"; ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF8"> <title><?php echo $a;?></title> </head> </html> ========================================================== 宣言以前のマルチバイトに対する対策はどのようにしたら良いでしょうか?

    • 締切済み
    • PHP
  • MySQL4.0 UTF-8 での文字化け

    こんにちは MySQL4.0 & PHP4.3 でHTMLは文字コードUTF-8で記述しています。 MySQL4.0の文字コード設定はレンタルサーバーのため不明ですが、 phpMyAdminで、utf-8にてデータを入力しました。 select文でMySQLのデータを拾ってくると文字化けはおきないのですが PHP経由でPOSTされた値を使ってinsertやupdateをかけると文字化けしてしまいます。phpMyAdmin上でも文字化けしていますが、phpMyAdminをEUC-JPにすると、入力した文字が文字化けせずに表示されます。 (が、すでに入っているデータは文字化けします、、、、) 入力画面は metaでUTF-8宣言をしており、ブラウザ(IE)上でエンコードを確認するとUnicode(UTF-8)になっています。4.1みたいにset names を指定するとうまくいくかな?と思ったのですが、やっぱり4.0なので結果は変わらず、でした。PHPのスクリプトそのものは、UTF-8で記述しているのですが、、、、 どういった項目をみなおせばいいのでしょうか?

    • ベストアンサー
    • MySQL
  • Oracleでの日本語フィールド名

    その昔、「Oracleでフィールド名にマルチバイト文字を使うなんてのはとんでもないことだ」のような風潮がありましたが、今では実際のところどうなんでしょうか? R8.0.6ではoo4oを使って接続する場合に促音(小さい「ツ」など)が文字化けするという事象を聞いたことがあるのですが、これはR8.1.7では直っているようです。 Oracleでフィールド名にマルチバイト文字を使ってこんな不具合が起きた、全く起きたことない、等の情報があれば教えてください。

  • codeigniter 文字化け

    codeigniterからの出力が文字化けします。 mysqlへの入力は正常です。 mysqlのcharacter_set関係はすべてutf8です。 DBもutf8ですし.. どこに問題があるのでしょうか。 よろしくお願いします。

    • 締切済み
    • PHP

専門家に質問してみよう