java初心者です。
以下のソースコードの
「new String(strVal.getBytes("ISO-8859-1"),"JISAutoDetect」
の部分の意味が分からなくこまっています。
<%@ page import="java.io.*" %>
<%!
public String strEncode(String strVal) throws UnsupportedEncodeingExcception{
if(strVal==null){
return null;
}else{
return new String(strVal.getBytes("ISO-8859-1"),"JISAutoDetect"));
}
}
%>
そもそも
「バイト配列とは何か」
「なんで必要なのか?」
など、わかりやすく説明していただけると幸いです。
No.1ベストアンサー
- 回答日時:
文字コードについてどの程度の知識をお持ちですか。
JavaのStringやcharで使われている文字コードは1文字=16ビット(2バイト)の固定長です (Unicodeのバージョンが上がってこの原則は一部崩れてしまいましたが)。'A'という文字も'亜'という文字も16ビットの値で表されます。
一方、世の中で広く使われている文字コードでは1文字を表すのに8ビット(1バイト)、16ビット(2バイト)、24ビット(3バイト)などが混在しています。たとえばShift_JISでは'A'は1バイト、'亜'は2バイトですし、UTF-8では'A'は1バイト、'亜'は3バイトで表されます。このような文字コードのデータをStringやcharで扱うのは不便なので、byteの配列に入れて扱います。
Shift_JISのbyte配列 ←→ Java String ←→ UTF-8のbyte配列
JavaのStringから各文字コードのbyte配列を得るにはgetBytes()を使用し、逆にbyte配列からStringを作るにはnew String(byte配列、エンコーディング名)を使います。
基本は上記の通りなのですが、ご質問の「new String(strVal.getBytes("ISO-8859-1"), "JISAutoDetect")」というのはさらに特殊な使い方です。
おそらく、strValには「文字コードを正しく設定できなかった日本語文字列のデータ」が入っているのでしょう。それを一度byte配列に戻してから"JISAutoDetect"で文字コードを判定して改めてStringに変換しているのだと思われます。getBytes("ISO-8859-1")の部分で余計におかしくならないかが心配ですが。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- その他(プログラミング・Web制作) python 気象データの取得 2 2023/06/20 23:54
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- Java java final 1 2022/06/10 22:49
- C言語・C++・C# C++プログラミングコードにポリモーフィズムを取り入れ方を教えてください。 2 2023/06/09 11:17
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
java
-
配列の値の削除について
-
NaN(Not a Number)を配列に入れ...
-
配列をセッションに割り当てた後で
-
質問です。 配列が100以上の場...
-
ダブルクォーテーションのrepla...
-
wsprintf関数の使い方について
-
配列にnullを代入すると、null...
-
EXCEL VBA で、0から?1から?
-
IF関数でEmpty値を設定する方法。
-
このプログラミング誰か教えて...
-
javaの再帰関数を用いるプログ...
-
パソコンキーボードで時分秒を...
-
複数のテキストボックスに同じ...
-
Javaで改行などが出来ないのです。
-
TextAreaでの文字の色
-
BOOL値を逆にしたい
-
ウィンドウなしで画像表示
-
テキストエリアで改行する
-
Enumのname()とtoString()の違...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
n番目に大きな値を探索する
-
この警告はどうすれば?
-
[Ljava.lang.Stringってなんですか
-
Javaで文字を漢字であるか否か...
-
配列をセッションに割り当てた後で
-
配列の中に複数存在する数がい...
-
java
-
Javaで文字と数字が混ざったも...
-
C#で動的配列Listの中身をListB...
-
配列で、値の入っている要素数...
-
『args[]』とは?
-
【C#】ハッシュテーブル(連想...
-
ページング
-
セッションを使ったint型の値の...
-
配列について
-
同じ配列またはクラスを、2回...
-
ArrayListからBean配列に値をセ...
-
Java配列の問題を教えてくださ...
-
java 大文字と小文字を入れ替える
-
同じ文字を探しカウントしたい
おすすめ情報