QA@IT
«回答へ戻る

5599
 > Microsoft Windows や Mac OS X などの最近の OS は、表面上は Unicode 以外の文字コードを使っていても内部処理上は Unicode に変換して処理しているものが多い。
 
 といった話が背景にあるという事です。
+
+---
+
+**追記**
+
+本題とは関係ないですがコマンドプロンプトはShiftJISしか出力できないわけではありません(日本語環境のデフォルトはそうですが)。
+cmd.exe(コマンドプロンプト)でutf8のテキストを表示
+
+utf8のテキストファイル(utf8.txtとします)を用意します。
+cmd.exeを起動しタイトルバーを右クリックして、プロパティを開きフォントを ラスタフォントから MS ゴシックにしてOK。
+コマンドプロンプトを閉じ、もう一度開きます。(プロパティでフォントがMS ゴシックであることを確認)
+以下のコマンドを実行します
+
+```
+chcp 65001
+type utf8.txt
+chcp 932
+```
+
+うまくいかない場合は以下の様にしてみてください
+```
+chcp 65001
+cmd /c type utf8.txt
+chcp 932
+```
+
+コマンドプロンプトで表示できる文字はコードページに左右されます。

VBScriptはUTF-8の状態でOracleのデータを触っておらず、内部でUnicode文字列として操作しています。
ADOでデータを取り出す際にUnicodeに変換されたものを受け取っています。
(VBScript内ではOracleのデータ、ADOに限らずたとえば変数に代入した文字列も内部ではUnicodeとして扱われています。)

正しくUnicodeに変換されていてくれれば普通の変数に入っている文字と同じように扱えますので文字化けが起きません。


詳しくは内部文字コードの話になってきます。
まとまっているページは残念ながら見つけられませんでしたが、

http://www.atmarkit.co.jp/fwin2k/win2ktips/395codeconv/codeconv.html

現在のWindows OSでは、内部的にはUnicodeを使って処理を行っている。

http://ja.wikipedia.org/wiki/%E6%96%87%E5%AD%97%E3%82%B3%E3%83%BC%E3%83%89

Microsoft Windows や Mac OS X などの最近の OS は、表面上は Unicode 以外の文字コードを使っていても内部処理上は Unicode に変換して処理しているものが多い。

といった話が背景にあるという事です。


追記

本題とは関係ないですがコマンドプロンプトはShiftJISしか出力できないわけではありません(日本語環境のデフォルトはそうですが)。
cmd.exe(コマンドプロンプト)でutf8のテキストを表示

utf8のテキストファイル(utf8.txtとします)を用意します。
cmd.exeを起動しタイトルバーを右クリックして、プロパティを開きフォントを ラスタフォントから MS ゴシックにしてOK。
コマンドプロンプトを閉じ、もう一度開きます。(プロパティでフォントがMS ゴシックであることを確認)
以下のコマンドを実行します

chcp 65001
type utf8.txt
chcp 932

うまくいかない場合は以下の様にしてみてください

chcp 65001
cmd /c type utf8.txt
chcp 932

コマンドプロンプトで表示できる文字はコードページに左右されます。

VBScriptはUTF-8の状態でOracleのデータを触っておらず、内部でUnicode文字列として操作しています。
ADOでデータを取り出す際にUnicodeに変換されたものを受け取っています。
(VBScript内ではOracleのデータ、ADOに限らずたとえば変数に代入した文字列も内部ではUnicodeとして扱われています。)

正しくUnicodeに変換されていてくれれば普通の変数に入っている文字と同じように扱えますので文字化けが起きません。

---

詳しくは内部文字コードの話になってきます。
まとまっているページは残念ながら見つけられませんでしたが、

http://www.atmarkit.co.jp/fwin2k/win2ktips/395codeconv/codeconv.html

> 現在のWindows OSでは、内部的にはUnicodeを使って処理を行っている。

http://ja.wikipedia.org/wiki/%E6%96%87%E5%AD%97%E3%82%B3%E3%83%BC%E3%83%89

> Microsoft Windows や Mac OS X などの最近の OS は、表面上は Unicode 以外の文字コードを使っていても内部処理上は Unicode に変換して処理しているものが多い。

といった話が背景にあるという事です。

---

**追記**

本題とは関係ないですがコマンドプロンプトはShiftJISしか出力できないわけではありません(日本語環境のデフォルトはそうですが)。
cmd.exe(コマンドプロンプト)でutf8のテキストを表示

utf8のテキストファイル(utf8.txtとします)を用意します。
cmd.exeを起動しタイトルバーを右クリックして、プロパティを開きフォントを ラスタフォントから MS ゴシックにしてOK。
コマンドプロンプトを閉じ、もう一度開きます。(プロパティでフォントがMS ゴシックであることを確認)
以下のコマンドを実行します

```
chcp 65001
type utf8.txt
chcp 932
```

うまくいかない場合は以下の様にしてみてください
```
chcp 65001
cmd /c type utf8.txt
chcp 932
```

コマンドプロンプトで表示できる文字はコードページに左右されます。

回答を投稿

VBScriptはUTF-8の状態でOracleのデータを触っておらず、内部でUnicode文字列として操作しています。
ADOでデータを取り出す際にUnicodeに変換されたものを受け取っています。
(VBScript内ではOracleのデータ、ADOに限らずたとえば変数に代入した文字列も内部ではUnicodeとして扱われています。)

正しくUnicodeに変換されていてくれれば普通の変数に入っている文字と同じように扱えますので文字化けが起きません。


詳しくは内部文字コードの話になってきます。
まとまっているページは残念ながら見つけられませんでしたが、

http://www.atmarkit.co.jp/fwin2k/win2ktips/395codeconv/codeconv.html

現在のWindows OSでは、内部的にはUnicodeを使って処理を行っている。

http://ja.wikipedia.org/wiki/%E6%96%87%E5%AD%97%E3%82%B3%E3%83%BC%E3%83%89

Microsoft Windows や Mac OS X などの最近の OS は、表面上は Unicode 以外の文字コードを使っていても内部処理上は Unicode に変換して処理しているものが多い。

といった話が背景にあるという事です。

VBScriptはUTF-8の状態でOracleのデータを触っておらず、内部でUnicode文字列として操作しています。
ADOでデータを取り出す際にUnicodeに変換されたものを受け取っています。
(VBScript内ではOracleのデータ、ADOに限らずたとえば変数に代入した文字列も内部ではUnicodeとして扱われています。)

正しくUnicodeに変換されていてくれれば普通の変数に入っている文字と同じように扱えますので文字化けが起きません。

---

詳しくは内部文字コードの話になってきます。
まとまっているページは残念ながら見つけられませんでしたが、

http://www.atmarkit.co.jp/fwin2k/win2ktips/395codeconv/codeconv.html

> 現在のWindows OSでは、内部的にはUnicodeを使って処理を行っている。

http://ja.wikipedia.org/wiki/%E6%96%87%E5%AD%97%E3%82%B3%E3%83%BC%E3%83%89

> Microsoft Windows や Mac OS X などの最近の OS は、表面上は Unicode 以外の文字コードを使っていても内部処理上は Unicode に変換して処理しているものが多い。

といった話が背景にあるという事です。