回答編集履歴

4

修正

2022/11/24 11:31

投稿

jimbe
jimbe

スコア12659

test CHANGED
@@ -1,12 +1,12 @@
1
1
  >String str =”シフト JIS 文字列”;
2
- は、 str に入るのは "シフト JIS 文字列の(ソースファイル上の)バイト列を unicode と見なして文字列化したもの" です。
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 文字列をバイト列したもの" を byte 配列として定義する必要があります。
8
+ "シフト JIS 文字列" をソースコード上で表現するのであれば、 "シフト JIS 文字列をバイト列で表現したもの" を byte 配列として定義する必要があります。
9
- (ソースコードを SJIS で書いてコンパイル出来るようにしていても、文字列リテラルはコンパイラによって unicode に変換されてしまって、プログラムによる変換は失敗すると思います。**※未確認**)
9
+ (ソースコードをシフト JIS で書いてコンパイル出来るようにしていても、文字列リテラルはコンパイラによって unicode に変換されてしまって、プログラムによる変換は失敗すると思います。**※未確認**)
10
10
  それを String のコンストラクタ第一引数に指定し、 第二引数として "SJIS" を指定することで変換されます。
11
11
  ```java
12
12
  public class Main {

3

コード追加

2022/11/24 11:18

投稿

jimbe
jimbe

スコア12659

test CHANGED
@@ -5,5 +5,18 @@
5
5
 
6
6
  以上のことから、 各行において想定されていると思われる結果となっていないものと思います。
7
7
 
8
- "シフト JIS 文字列" をソースコード上で表現するのであれば、 "シフト JIS 文字列をバイト列にしたもの" を byte 配列として定義する必要があります。
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

追記

2022/11/24 11:06

投稿

jimbe
jimbe

スコア12659

test CHANGED
@@ -1,7 +1,9 @@
1
- >String str =”ShiftJIS 文字列”;
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
- ではstr のは "ShiftJIS 文字列のバイト列を unicode 文字列化したもの" です。
6
+ 以上のことから各行おいて想定されていると思われる結果といないものと思います。
4
7
 
5
- [String.getBytes(String)](https://docs.oracle.com/javase/jp/8/docs/api/java/lang/String.html#getBytes-java.lang.String-) unicode 文字列を該当文字セットのバイト列に変換するものす。
8
+ "シフト JIS の文字列" をソースコード上で表現するのであれば"シフト JIS の文字列をバイト列にしたもの" を byte 配列として定義る必要があります
6
-
7
- [String のコンストラクタ](https://docs.oracle.com/javase/jp/8/docs/api/java/lang/String.html#String-byte:A-java.nio.charset.Charset-) の引数、 第引数に入っいるバイト列の文字セット名で、その文字セットの文字列を unicode の文字列に変換するです。
9
+ それを String のコンストラクタ第引数に指定し、 第引数とし"SJIS" を指定すること変換されます。

1

追加

2022/11/24 11:00

投稿

jimbe
jimbe

スコア12659

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 の文字列に変換る形です