javaで作るwebアプリで扱う文字コード(日本語)について
javaで作るごく普通のwebアプリで扱う文字コード(日本語)についての質問です。
プレゼンテーション層-ビジネスロジック層の2層アーキテクチャで、データベースは
無く、ビジネスロジック層で入力ファイルを処理して結果を画面に出すというアプリです。
javaのデフォルト文字コードはUTF-8等だそうですが、例えばクライアントが
Linuxマシンの時は、入力テキストファイルは普通、EUC-JPと思います。
以下、2点質問です。
1.この時、EUC-JPのテキストからUTF-8への変換は、JVMが自動的にするのですか?
Yesだったら、クライアント側はプラットフォームの種類にかかわらず、
文字コードを意識する必要はないのでしょうか。
Noだったら、一般的にはどこがするのですか?
2.1の答えがどちらにしても、クライアントのOSのデフォルトのコードを
UTF-8に変更する必要は無いですよね?関連する他のアプリケーションやミドルウェア
がUTF-8で動作するのかの検証は必要ないですよね?
もし認識が違っておりましたら、教えて下さい。
サーブレットとか画面周りの知識が無いので、質問の仕方がおかしいところが
ありましたら、申し訳ありません。
No.2ベストアンサー
- 回答日時:
Bruce Eckel, "Thinking in Java (4th Edition)" (Prentice Hall, 2006)
によると、p.922~p.923に、次のようにあります。
Java 1.1 made some significant modifications to the fundamental I/O stream library.
When you see the Reader and Writer classes, your first thought (like mine) might be that these were meant to replace the InputStream and OutputStream classes.
But that’s not the case.
Although some aspects of the original streams library are deprecated (if you use them you will receive a warning from the compiler), the InputStream and OutputStream classes still provide valuable functionality in the form of byte-oriented I/O, whereas the Reader and Writer classes provide Unicode-compliant, character-based I/O. In addition:
1. Java 1.1 added new classes into the InputStream and OutputStream hierarchy, so it’s obvious those hierarchies weren’t being replaced.
2. There are times when you must use classes from the “byte” hierarchy in combination with classes in the “character” hierarchy. To accomplish this, there are “adapter” classes:
InputStreamReader converts an InputStream to a Reader and OutputStreamWriter converts an OutputStream to a Writer.
The most important reason for the Reader and Writer hierachies is for internationalization.
The old I/O stream hierarchy supports only 8-bit byte streams and doesn't handle the 16-bit Unicode characters well.
Since Unicode is used for internationalization (and Java's native char is 16-bit Unicode), the Reader and Writer hierarchies were added to support Unicode in all I/O operations.
In addition, the new libraries are designed for faster operations than the old.
>Linuxマシンの時は、入力テキストファイルは普通、EUC-JPと思います。
私の環境ではUTF-8です。
>関連する他のアプリケーションやミドルウェア
>がUTF-8で動作するのかの検証は必要ないですよね?
あります。(レガシーなものを使う場合等)
もっとも、こういう文字コードの問題を解決するためにUnicodeが多くの方々の多大の努力によって開発されたにも関わらず、未だにUnicodeを使わずに、単にWindowsマシンだというだけで、ShiftJISを使う人が未だにあとをたたないのは、全くはた迷惑な話で、改善していって欲しいもんです。
お礼が遅くなって、大変申し訳ありませんでした。ご回答、どうもありがとうございました。
Linuxマシンは最近はUTF-8になっているのですね。自分が使っていたものが古かったです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP phpのメールフォームの完了画面でメール受信のコードを書いています。 1 2023/05/31 11:39
- UNIX・Linux テキストファイルをページ番号付きでコマンドラインから印刷したい 1 2023/02/22 12:47
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- PostgreSQL PostgressからMySQL(MariaDB)へ構造を変更する際のTimestamp等について 2 2023/04/04 12:09
- Outlook(アウトルック) PCで登録途中の画面から認証コードを確認する方法を教えてください。 3 2022/09/29 06:11
- Windows 8 メモ帳による文字コード変換 2 2022/09/01 18:38
- その他(プログラミング・Web制作) 文字コード及びフォントに関する次の記述を読み,適切なものをすべて選べ。 ASCIIとは,英数字だけを 4 2023/01/11 19:10
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- 労働相談 合意済み仕様の商品納入後における仕様変更要求への対応について 5 2023/04/19 09:41
- その他(プログラミング・Web制作) 次に、楽天のアジャイル就活に参加して、1日で内定を獲得できる。私は大企業に就職できる? 2 2022/04/17 13:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
vba クリップボードクリアにつ...
-
IISワーカープロセスが原因でCP...
-
GDIはいつ使われていますか?
-
ASP(VB).NETでの背景色変更
-
[VB.2005]クライアントからWEB...
-
32ビットのアプリで、64ビットO...
-
Delphiでヘルプメニューを右端に
-
C#のメモリマップドファイルに...
-
unzip32.dllの利用について(64b...
-
JavaアプリケーションからHTML...
-
Java でネイティブアプリケーシ...
-
JavaとObjective-c間でJNIエラー
-
SurfaceViewの一時停止や再開方法
-
RTT計測
-
プラグインとパッチの違いは?
-
HTMLアプリケーションの作成
-
VBAの「for i=1 to cells(…」...
-
データベースのデータをTextBox...
-
Javaでのエラーについて
-
使用しているJUnitのバージョン...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
vba クリップボードクリアにつ...
-
VBのWPFとはなんでしょうか?
-
IISワーカープロセスが原因でCP...
-
unzip32.dllの利用について(64b...
-
プラグインとパッチの違いは?
-
帳票出力について
-
このVBAでExcelアプリケーショ...
-
32ビットのアプリで、64ビットO...
-
C#のメモリマップドファイルに...
-
ログオフ中でもアプリケーショ...
-
C++からC#へ
-
意味が分からないエラー
-
予約システムの開発ツール
-
HTMLアプリケーションの作成
-
JAVAプログラムをWEB表示させる...
-
java3dが動かない
-
外部アプリケーションの呼び出し方
-
AccessとVBの違いについて
-
Javaアプレットで作成したレー...
-
SurfaceViewの一時停止や再開方法
おすすめ情報