ツリー一括表示

Nomal 文字コード変換について /トニー (13/06/08(Sat) 22:15) [#6282]
Nomal Re[1]: 文字コード変換について /うぇいく (13/06/09(Sun) 15:01) [#6283]
  └Nomal Re[2]: 文字コード変換について /トニー (13/06/10(Mon) 21:10) [#6287] 解決済み!


親記事 / ▼[ 6283 ]
/ 親階層)  文字コード変換について
□投稿者/ トニー 【182.250.157.229】(2013/06/08(Sat) 22:15:12)

    Shift_JISの文字を文字変換命令ではなく、UNICODE変換命令で変換した文字コードをShift_JISの元の文字に戻したいのですが、
    どのようにしたらよろしいでしょうか。
    ご指導よろしくお願いいたします。

    #ここから
    元データ=「東京都」
    元データを表示
    元データを文字コード調査して表示
    ’Shift_JISと表示される

    元データをUNICODE変換して変換後1データに代入 ’ 
    変換後1データを表示
    ’「qgャN尋」と表示されるbr>
    元データをSJISからUNICODEへ文字コード変換して変換後2データに代入 ’
    変換後2データを表示
    ’「gqNャ・」と表示される
    ’,鉢△之覯未違うのは、どうして?

    ’,琶儡垢靴織如璽燭鮓気北瓩靴燭い里任垢、

    変換後1データをSJIS変換して復元1データに代入
    復元1データを表示
    ’「qg」と表示される

    変換後1データをUNICODEからSJISへ文字コード変換して復元2データに代入
    復元2データを表示
    ’「照」と表示される

    ’元データをUNICODE変換命令で変換してしまった変換後1データを
    ’どのようにすれば、元データ「東京都」に戻せるでしょうか?
    ’よろしくお願いします。


[ □ Tree ] 返信 削除キー/
[ □ Tree ] 返信

▲[ 6282 ] / ▼[ 6287 ]
/ 1階層)  Re[1]: 文字コード変換について
□投稿者/ うぇいく 【220.147.194.203】(2013/06/09(Sun) 15:01:23)

http://weyk.la.coocan.jp/weyk/nadesiko/
    こんにちは。

    > ’,鉢△之覯未違うのは、どうして?

    1は、UTF-16LEのBOMなし。2は、UTF-16BEのBOM付です。
    BOMは、この文字列がどんな文字コードで、バイトオーダーがどうなっているのかを自動的に判断するために付けます。規約などでバイトオーダーが決まっている場合を除くと、BOMが無いとうまく認識できない可能性が出てきます。
    (BOM=Byte Order Mark.16bitの値のバイトの並び順を識別するための目印)

    > 変換後1データをSJIS変換して復元1データに代入
    > 復元1データを表示
    > ’「qg」と表示される

    文字コードの自動認識の限界です。日本語をUTF-16で表記した文字列は、文字コードの種類の識別が困難です。復元1データの文字コード調査を表示すると、見当違いな文字コードとして扱われているのがわかるかと思います。
    (文字コードの自動認識は、どうしても元の文字コードがわからない場合の、博打みたいなものです。便利に感じる機能ですが、コンピュータ処理での特徴の1つである「確実性」の部分が失われるため、基本的に使うのを避けたほうが良い機能です。)

    > 変換後1データをUNICODEからSJISへ文字コード変換して復元2データに代入
    > 復元2データを表示
    > ’「照」と表示される

    BOMが無いためにバイトオーダーが不明なため、入力がUTF-16BEとして扱われています(文字コード変換の命令での、`UNICODE`はBEがデフォルトなのだと思います)

    > ’元データをUNICODE変換命令で変換してしまった変換後1データを
    > ’どのようにすれば、元データ「東京都」に戻せるでしょうか?
    > ’よろしくお願いします。

    自動認識にまかせたり、単に「UNICODE」とせず、UTF-16LEやUTF-16BE等、しっかりと明示すると確実です。もし、規約として決まっているファイルや機能の場合はそれにあわせて明示して変換しましょう。
    (命令の名前からはBEなのかLEなのか読み取れない上に、BOMもつかないため、UNICODE変換は使いづらいですね)

    元データは`東京都`
    元データを`SJIS`から`UTF-16LE`へ文字コード変換して変換後データに代入
    変換後データを`UTF-16LE`から`SJIS`へ文字コード変換して復元データに代入
    復元データを表示


    または、BOMがついていれば、BOMにより、この文字列がUTF-16であることと、バイトオーダーがLEなのかBEなのかがわかりますから、自動認識の精度は上がります(確実ではありません。また、BOMは先頭についている必要があるため、変換後に文字列の操作が必要になる場合も邪魔になります。)

[ 親 6282 / □ Tree ] 返信 削除キー/
[ 親 6282 / □ Tree ] 返信

▲[ 6283 ] / 返信無し
/ 2階層)  Re[2]: 文字コード変換について
□投稿者/ トニー 【182.250.157.143】(2013/06/10(Mon) 21:10:08)

    No6283に返信(うぇいくさんの記事)

    うぇいくさん、こんばんわ。

    明解な回答ありがとうございました。
    悩んでいたことが、おかげで解決しました。
    丁寧な説明本当にありがとうございます。

解決済み!
[ 親 6282 / □ Tree ] 返信 削除キー/
[ 親 6282 / □ Tree ] 返信


Pass/

BBS CGI RSS CGI
Child Tree RSS/SPAM対応版