回答編集履歴
3
書式の改善
answer
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
でデコードするのは無理です。
|
|
10
10
|
|
|
11
|
-
そこで、チカラワザになりますが、`JIS_DATA`の各「バイト」の最上位ビットを'1
|
|
11
|
+
そこで、チカラワザになりますが、`JIS_DATA`の各「バイト」の最上位ビットを'1'にしてしまいましょう。
|
|
12
12
|
そうすれば`JIS_DATA`を「EUC-JP でエンコードされたデータ」とみなすことが可能になるかな?と思います。
|
|
13
13
|
```
|
|
14
14
|
for (int i = 0; i < sizeof JIS_DATA / sizeof(wchar_t); i++) {
|
2
書式の改善
answer
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
> wchar_t JIS_DATA[100];
|
|
2
2
|
> 上記の領域にJISコードの2バイト文字列(ABCDEFGH)が格納されています。
|
|
3
3
|
|
|
4
|
-
JIS X 0208 文字セットの2バイト文字が
|
|
4
|
+
JIS X 0208 文字セットの2バイト文字が`wchar_t`配列に格納されているものと解釈して話を進めます。
|
|
5
5
|
その配列は「ISO-2022-JP で符号化されたデータ」ではないので、
|
|
6
6
|
|
|
7
7
|
> QTextCodec::codecForName("ISO-2022-JP");
|
|
8
8
|
|
|
9
9
|
でデコードするのは無理です。
|
|
10
10
|
|
|
11
|
-
そこで、チカラワザになりますが、JIS_DATA
|
|
11
|
+
そこで、チカラワザになりますが、`JIS_DATA`の各「バイト」の最上位ビットを'1`にしてしまいましょう。
|
|
12
|
-
そうすれば
|
|
12
|
+
そうすれば`JIS_DATA`を「EUC-JP でエンコードされたデータ」とみなすことが可能になるかな?と思います。
|
|
13
13
|
```
|
|
14
14
|
for (int i = 0; i < sizeof JIS_DATA / sizeof(wchar_t); i++) {
|
|
15
15
|
if (0 == JIS_DATA[i]) {
|
1
コードを修正
answer
CHANGED
|
@@ -12,7 +12,10 @@
|
|
|
12
12
|
そうすれば JIS_DATA を「EUC-JP でエンコードされたデータ」とみなすことが可能になるかな?と思います。
|
|
13
13
|
```
|
|
14
14
|
for (int i = 0; i < sizeof JIS_DATA / sizeof(wchar_t); i++) {
|
|
15
|
+
if (0 == JIS_DATA[i]) {
|
|
16
|
+
break;
|
|
17
|
+
}
|
|
15
|
-
|
|
18
|
+
JIS_DATA[i] |= 0x8080;
|
|
16
19
|
}
|
|
17
20
|
QTextCodec::codecForName("EUC-JP");
|
|
18
21
|
QByteArray aJisStr = QByteArray((const char *)JIS_DATA);
|