回答編集履歴
4
修正
test
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
>String str =”シフト JIS 文字列”;
|
2
|
-
で
|
2
|
+
で str に入るのは、 "シフト JIS 文字列の(ソースファイル上の)バイト列を 'ソースファイルの文字コードの文字列' と見なして文字列 (unicode) 化したもの" です。
|
3
3
|
[String.getBytes(String)](https://docs.oracle.com/javase/jp/8/docs/api/java/lang/String.html#getBytes-java.lang.String-) は、 unicode 文字列を該当文字セットのバイト列に変換するものです。
|
4
4
|
[String のコンストラクタ](https://docs.oracle.com/javase/jp/8/docs/api/java/lang/String.html#String-byte:A-java.nio.charset.Charset-) の第二引数は、 第一引数に入っているバイト列の文字セット名で、その文字セットの文字列を unicode の文字列に変換する形です。
|
5
5
|
|
6
6
|
以上のことから、 各行において想定されていると思われる結果となっていないものと思います。
|
7
7
|
|
8
|
-
"シフト JIS 文字列" をソースコード上で表現するのであれば、 "シフト JIS 文字列をバイト列
|
8
|
+
"シフト JIS 文字列" をソースコード上で表現するのであれば、 "シフト JIS 文字列をバイト列で表現したもの" を byte 配列として定義する必要があります。
|
9
|
-
(ソースコードを
|
9
|
+
(ソースコードをシフト JIS で書いてコンパイル出来るようにしていても、文字列リテラルはコンパイラによって unicode に変換されてしまって、プログラムによる変換は失敗すると思います。**※未確認**)
|
10
10
|
それを String のコンストラクタ第一引数に指定し、 第二引数として "SJIS" を指定することで変換されます。
|
11
11
|
```java
|
12
12
|
public class Main {
|
3
コード追加
test
CHANGED
@@ -5,5 +5,18 @@
|
|
5
5
|
|
6
6
|
以上のことから、 各行において想定されていると思われる結果となっていないものと思います。
|
7
7
|
|
8
|
-
"シフト JIS
|
8
|
+
"シフト JIS 文字列" をソースコード上で表現するのであれば、 "シフト JIS 文字列をバイト列にしたもの" を byte 配列として定義する必要があります。
|
9
|
+
(ソースコードを SJIS で書いてコンパイル出来るようにしていても、文字列リテラルはコンパイラによって unicode に変換されてしまって、プログラムによる変換は失敗すると思います。**※未確認**)
|
9
10
|
それを String のコンストラクタ第一引数に指定し、 第二引数として "SJIS" を指定することで変換されます。
|
11
|
+
```java
|
12
|
+
public class Main {
|
13
|
+
public static void main(String[] args) throws Exception {
|
14
|
+
byte[] sjisBytes = new byte[]{ (byte)0x82, (byte)0xa0, (byte)0x82, (byte)0xa2, (byte)0x82, (byte)0xa4 }; //"あいう"
|
15
|
+
String str = new String(sjisBytes, "SJIS");
|
16
|
+
System.out.println(str);
|
17
|
+
}
|
18
|
+
}
|
19
|
+
```
|
20
|
+
```plain
|
21
|
+
あいう
|
22
|
+
```
|
2
追記
test
CHANGED
@@ -1,7 +1,9 @@
|
|
1
|
-
>String str =”
|
1
|
+
>String str =”シフト JIS 文字列”;
|
2
|
+
では、 str に入るのは "シフト JIS 文字列の(ソースファイル上の)バイト列を unicode と見なして文字列化したもの" です。
|
3
|
+
[String.getBytes(String)](https://docs.oracle.com/javase/jp/8/docs/api/java/lang/String.html#getBytes-java.lang.String-) は、 unicode 文字列を該当文字セットのバイト列に変換するものです。
|
4
|
+
[String のコンストラクタ](https://docs.oracle.com/javase/jp/8/docs/api/java/lang/String.html#String-byte:A-java.nio.charset.Charset-) の第二引数は、 第一引数に入っているバイト列の文字セット名で、その文字セットの文字列を unicode の文字列に変換する形です。
|
2
5
|
|
3
|
-
|
6
|
+
以上のことから、 各行において想定されていると思われる結果となっていないものと思います。
|
4
7
|
|
5
|
-
|
8
|
+
"シフト JIS の文字列" をソースコード上で表現するのであれば、 "シフト JIS の文字列をバイト列にしたもの" を byte 配列として定義する必要があります。
|
6
|
-
|
7
|
-
|
9
|
+
それを String のコンストラクタ第一引数に指定し、 第二引数として "SJIS" を指定することで変換されます。
|
1
追加
test
CHANGED
@@ -1 +1,7 @@
|
|
1
|
+
>String str =”ShiftJIS 文字列”;
|
2
|
+
|
3
|
+
では、 str に入るのは "ShiftJIS 文字列のバイト列を unicode と見なして文字列化したもの" です。
|
4
|
+
|
5
|
+
[String.getBytes(String)](https://docs.oracle.com/javase/jp/8/docs/api/java/lang/String.html#getBytes-java.lang.String-) は、 unicode 文字列を該当文字セットのバイト列に変換するものです。
|
6
|
+
|
1
|
-
[String のコンストラクタ](https://docs.oracle.com/javase/jp/8/docs/api/java/lang/String.html#String-byte:A-java.nio.charset.Charset-) の第二引数は、 第一引数に入っているバイト列の文字セット名です。
|
7
|
+
[String のコンストラクタ](https://docs.oracle.com/javase/jp/8/docs/api/java/lang/String.html#String-byte:A-java.nio.charset.Charset-) の第二引数は、 第一引数に入っているバイト列の文字セット名で、その文字セットの文字列を unicode の文字列に変換する形です。
|