No.290 | 投稿日時: | 2005/05/20(金) 20:43 <親記事> |
投稿者: | UTF8 |
初めて投稿させて頂きます。
外字を含むSJISをUTF-8へのコード変換で悩んでいます。
ご指導のほど宜しくお願い致します。
OS:HP-UX11i
検証状況:
iconvの利用を想定し、以下の検討を行いました。
1.Windowsクライアントにて外字を作成
外字A:SJIS:0xf040
2.上記外字を含むSJISのファイルを作成しHPへFTPでUP
3.iconvを利用して変換 ⇒外字のコード変換失敗(EFBFBD)
iconvの変換テーブルは以下を利用
>sjis0201 utf8
>sjisMS utf8
>sjis utf8
本来であれば、EE8080へ変換されるべきではと理解しています。
※utf8はbom無しを想定
hpにはcp932の変換テーブルが良くわかりませんが
sjisMS(jis0201)が対応しているかと想定するも、
外字領域(sjis)のマッピングが無いため、一律EFBFBDになる?
と想定しています。
なにか良いアイディアはないでしょうか?
アドバイスのほど宜しくお願いします。
No.291 | 投稿日時: | 2005/05/21(土) 12:07 <↑親記事:No.290> |
投稿者: | 森山 将之 |
HP-UX 11i を使える環境にはありませんので、実際のところどうなっているのかわかりませんが、次のページによると、sjisMS を使えばよさそうに思えます。
HP-UX 11iバージョン1.6リリースノート > 第 9章 国際化機能
日本ベンダ協議会(JVC) iconvコンバータ
http://docs.hp.com/ja/5187-0702/ch09s05.html
もしも sjisMS と utf8 との間でユーザー定義文字が変換できないのであれば、HP に問い合わせをした方がよろしいかと思います。
参考
OSF 日本ベンダ協議会 (OSF/JVC) 推奨
日本語 EUC ・シフト JIS 間コード変換仕様とコード系実態調査
http://www.opengroup.or.jp/jvc/cde/sjis-euc.html
コード変換規則
http://www.opengroup.or.jp/jvc/cde/appendix.html
No.292 | 投稿日時: | 2005/05/23(月) 10:36 <↑親記事:No.291> |
投稿者: | UTF8 |
回答ありがとうございます。
HPに確認したいと思います。
参考情報ありがとうございました。
ベンダー依存ですが、情報が分かったら、
このBBSにUPしていきたいと思います。
No.293 | 投稿日時: | 2005/05/23(月) 13:25 <↑親記事:No.292> |
投稿者: | 森山 将之 |
結果を教えていただけると助かりますので、よろしくお願いいたします。
No.294 | 投稿日時: | 2005/05/25(水) 10:32 <↑親記事:No.293> |
投稿者: | UTF8 |
森山様
対応方法が大体見えました。
HP-UX11iB11.11では
iconvの変換テーブルでsjisp=ucs2がサポート
されていました。
この変換テーブルで、sjisの外字領域がucs2へ
変換できました。
こちらの要件としてはUTF-8ですので
更にucs2->utf8へ変換することでUTF8へ変換できました。
HPのiconvではsjisの外字領域を一度にutf8へ変換は
難しいとの結論になりした。
私はこの分野は素人で、まだ理解できていない部分が
ありますが、勉強になりました。
結構、奥が深い領域ですね。
No.295 | 投稿日時: | 2005/05/25(水) 18:25 <↑親記事:No.294> |
投稿者: | 森山 将之 |
結果のご報告ありがとうございます。
UTF-8 に変換したものを再度 Windows で変換する必要がある場合は、次の表にある Unicode値に変換されている必要がありますのでご注意ください。
文字 / SJISコード値 / Unicodeコード値 (UTF-8)
― / 0x815C / U+2015 (E2 80 95)
〜 / 0x8160 / U+FF5E (EF BD 9E)
‖ / 0x8161 / U+2225 (E2 88 A5)
− / 0x817C / U+FF0D (EF BC 8D)
¢ / 0x8191 / U+FFE0 (EF BF A0)
£ / 0x8192 / U+FFE1 (EF BF A1)
¬ / 0x81CA / U+FFE2 (EF BF A2)
上記のような変換を期待する場合は、libiconv に次のパッチを適用してメイクした iconv コマンドを使用すると良いでしょう。
http://www2d.biglobe.ne.jp/~msyk/software/libiconv-1.9.2-cp932-patch.html
No.290 | 投稿日時: | 2005/05/20(金) 20:43 <親記事> |
投稿者: | UTF8 |
初めて投稿させて頂きます。
外字を含むSJISをUTF-8へのコード変換で悩んでいます。
ご指導のほど宜しくお願い致します。
OS:HP-UX11i
検証状況:
iconvの利用を想定し、以下の検討を行いました。
1.Windowsクライアントにて外字を作成
外字A:SJIS:0xf040
2.上記外字を含むSJISのファイルを作成しHPへFTPでUP
3.iconvを利用して変換 ⇒外字のコード変換失敗(EFBFBD)
iconvの変換テーブルは以下を利用
>sjis0201 utf8
>sjisMS utf8
>sjis utf8
本来であれば、EE8080へ変換されるべきではと理解しています。
※utf8はbom無しを想定
hpにはcp932の変換テーブルが良くわかりませんが
sjisMS(jis0201)が対応しているかと想定するも、
外字領域(sjis)のマッピングが無いため、一律EFBFBDになる?
と想定しています。
なにか良いアイディアはないでしょうか?
アドバイスのほど宜しくお願いします。
No.291 | 投稿日時: | 2005/05/21(土) 12:07 <↑親記事:No.290> |
投稿者: | 森山 将之 |
HP-UX 11i を使える環境にはありませんので、実際のところどうなっているのかわかりませんが、次のページによると、sjisMS を使えばよさそうに思えます。
HP-UX 11iバージョン1.6リリースノート > 第 9章 国際化機能
日本ベンダ協議会(JVC) iconvコンバータ
http://docs.hp.com/ja/5187-0702/ch09s05.html
もしも sjisMS と utf8 との間でユーザー定義文字が変換できないのであれば、HP に問い合わせをした方がよろしいかと思います。
参考
OSF 日本ベンダ協議会 (OSF/JVC) 推奨
日本語 EUC ・シフト JIS 間コード変換仕様とコード系実態調査
http://www.opengroup.or.jp/jvc/cde/sjis-euc.html
コード変換規則
http://www.opengroup.or.jp/jvc/cde/appendix.html
No.292 | 投稿日時: | 2005/05/23(月) 10:36 <↑親記事:No.291> |
投稿者: | UTF8 |
回答ありがとうございます。
HPに確認したいと思います。
参考情報ありがとうございました。
ベンダー依存ですが、情報が分かったら、
このBBSにUPしていきたいと思います。
No.293 | 投稿日時: | 2005/05/23(月) 13:25 <↑親記事:No.292> |
投稿者: | 森山 将之 |
結果を教えていただけると助かりますので、よろしくお願いいたします。
No.294 | 投稿日時: | 2005/05/25(水) 10:32 <↑親記事:No.293> |
投稿者: | UTF8 |
森山様
対応方法が大体見えました。
HP-UX11iB11.11では
iconvの変換テーブルでsjisp=ucs2がサポート
されていました。
この変換テーブルで、sjisの外字領域がucs2へ
変換できました。
こちらの要件としてはUTF-8ですので
更にucs2->utf8へ変換することでUTF8へ変換できました。
HPのiconvではsjisの外字領域を一度にutf8へ変換は
難しいとの結論になりした。
私はこの分野は素人で、まだ理解できていない部分が
ありますが、勉強になりました。
結構、奥が深い領域ですね。
No.295 | 投稿日時: | 2005/05/25(水) 18:25 <↑親記事:No.294> |
投稿者: | 森山 将之 |
結果のご報告ありがとうございます。
UTF-8 に変換したものを再度 Windows で変換する必要がある場合は、次の表にある Unicode値に変換されている必要がありますのでご注意ください。
文字 / SJISコード値 / Unicodeコード値 (UTF-8)
― / 0x815C / U+2015 (E2 80 95)
〜 / 0x8160 / U+FF5E (EF BD 9E)
‖ / 0x8161 / U+2225 (E2 88 A5)
− / 0x817C / U+FF0D (EF BC 8D)
¢ / 0x8191 / U+FFE0 (EF BF A0)
£ / 0x8192 / U+FFE1 (EF BF A1)
¬ / 0x81CA / U+FFE2 (EF BF A2)
上記のような変換を期待する場合は、libiconv に次のパッチを適用してメイクした iconv コマンドを使用すると良いでしょう。
http://www2d.biglobe.ne.jp/~msyk/software/libiconv-1.9.2-cp932-patch.html