INASOFT 管理人のひとことフリーソフトダウンロードサイト「INASOFT」の管理人 矢吹拓也 が日々の「ひとこと」を語るページです。 2021年1月1日より、旧ブログ(blog.inasoft.org)からお引越ししました。 ・INASOFT Webサイト: https://www.inasoft.org/ ・管理人のふたこと(長文記事/寄稿文): https://www.inasoft.org/talk/ 2022年7月下旬より再び本業多忙化してきているため、更新頻度は落ちます。 [2022/7/24 19:32] Tweet ■各種ソフト正式版の更新のお知らせ2014年 8月17日(日) 15:41:49 [さくらのブログから転記] |
RSS配信中 | |
今日までβ版更新をしていた、下記の各ソフトについて、正式版への更新を行いました。
夏休み中にβ版の開発をしていましたので、夏休み終了と共に正式版の公開ということで。 修正し切れていない不具合等もあるかもしれませんが、次の連続休暇の時にでも修正をしたいと思います。 各ソフトのダウンロードページへのリンクは、INASOFTのトップページよりご利用ください。 -*-*-*-*-*-*-*-*- ところで、改行コード変換で、UTF-32を絡めた変換が、どうも、うまく動かないらしい。 以前は動いていたと思ったんですが…、いつの間にやら動かなくなっていて、ただプログラムはどうみても正しいので、簡単な実験プログラムを作ってみることにしました。 まずは、うまく動く場合。Unicode(UTF-16)の「あいうえお」から、Shift-JIS(CP=932)へ変換した結果を出力します。 #include <windows.h> #include <stdio.h> int main(void) { char s[120]; int is = sizeof(s), ls; if (0 == (ls = WideCharToMultiByte(932, 0, L"あいうえお", 5, s, is, NULL, NULL))) { printf("err=%d\n", GetLastError()); } else { printf("length = %d\n", ls); for(int i=0 ; i<ls ; ++i) { printf("%02X ", (unsigned char)s[i]); } } return 0; } 結果は、 length = 10 82 A0 82 A2 82 A4 82 A6 82 A8 と表示されます。これは想定通りです。 次に、Unicode(UTF-16)の「あいうえお」から、UTF-32へ変換した結果を得たいプログラム。 #include <windows.h> #include <stdio.h> int main(void) { char s[120]; int is = sizeof(s), ls; if (0 == (ls = WideCharToMultiByte(12000, 0, L"あいうえお", 5, s, is, NULL, NULL))) { printf("err=%d\n", GetLastError()); } else { printf("length = %d\n", ls); for(int i=0 ; i<ls ; ++i) { printf("%02X ", (unsigned char)s[i]); } } return 0; } 赤い字で書かれた部分が、先ほどのプログラムとの違い。 コードページ12000は、UTF-32のリトルエンディアン版となります。 このプログラムを実行すると、結果は、以下のようになります。 err=87 この87番のエラーは、パラメータの指定間違いという意味。 さっきと変えたパラメータは、コードページの部分(932→12000)しかありません。バッファサイズは120バイトと潤沢であり、足りないことはありません。 その他に、コードページを12000にした場合に変更しなければならないパラメータがあるとは、MSDNの記述からは読み取れないので、おそらくプログラムとしてはこれで正しいはず。でも、動いてくれない…。 ちなみに、コードページを12001(ビッグエンディアンのUTF-32)にした場合も同様。 もしかすると、WideCharToMultiByte() APIは、コードページ12000と12001には対応していないのかな? (同様の現象は、ConvertStringFromUnicodeEx() でも発生しているみたい。もしかすると、Windowsとしては対応しない文字コードなのかな?) 【追記】その後、色々ググっていたら、このコードページはManaged Application(要は .NET Framework上のみ)でしか使えない、みたいな記述のあるサイトを見つけたので、それが原因でしょうかね。前にうまく動いたと思ったのも、「複数行置換」(.NET Framework用のプログラム)を見ただけだったのかもしれない。 目次の表示: ブログではないので、コメント機能とトラックバック機能は提供していません。ご質問・ご意見等はメール、フィードバックまたはTwitter等からお願いします。いただいたご質問・ご意見などは、この「管理人のひとこと」の記事に追加、あるいは新規の記事にする形で一部または全文をそのまま、あるいは加工させていただいた上で、ご紹介させていただく場合があります。 当サイトでは掲載内容による不具合等に関する責任を持ちません。また、内容の正確性についての保証もありませんので、情報をご利用の際は、利用者の自己責任で確認をお願いします。 |
- 最近の更新 - |
|
3213043 (+0107)[+0285] Copyright© 2010-2024 INASOFT |