タグ

関連タグで絞り込む (0)

  • 関連タグはありません

タグの絞り込みを解除

Programmingとcharacter_encodingとwindowsに関するpipeheadのブックマーク (8)

  • プログラミング/小ネタ集/Unicode対応コーディング - ルーチェ's Homepage

    概要 † このコンテンツは、C/C++言語でWindowsプログラミングをしていて、かつMFCやATLにある CString クラスを使っていない人くらいにしか実益はないかもしれません。 が、内容的に知っておいて損はないことなので書いておきます。 概要としては、 LPTSTR 型や TCHAR 型について知り、NT系(Unicode環境)と9x系(非Unicode環境)のどちらにも最適化できるソースコードを書こうというお話です。 TCHAR 型を見たことがなくても、 LPTSTR 型なら見たことがある人も結構いるでしょう。 初心〜中級のWindowsプログラマは、大抵は LPTSTR 型と LPSTR 型の違いを特に意識せずにコードを書いています。 しかし、この二つの型を混同するのは非常に危険なことです。 まずはこれらの型の定義を説明し、 TCHAR 型を用いることでUnicode対応プロ

  • WindowsのShift-JIS環境でjperl から perl 5.8.X への移植

    わりとよく使っているらしいWindows 環境 のjperl(ActivePerl 5.005へのパッチか?) のプログラムが動かないといわれたので、ActivePerl 5.8.X で動くように修正した。 プログラムの内容はShift-JISのテキストファイルを特定の形式に変更するもの。プログラムの内容はできるだけ修正したくないので、ソースファイルを UTF-8 に変更しプログラムの先頭に次の行を追加した。 use utf8; use open IO => ":encoding(cp932)", ":std"; つまり、1行めでソースコードは utf8であることを明示。2行目で機種依存コードを含む Shift-JISコードファイルの入出力を行い、ついでに標準入出力も Shift-JISに設定したということ。 これで処理すべきファイル8個のファイルのうち7個までは正常に処理できた。 異常の

  • Paken.NET | TCHAR型のススメ

    C/C++Windowsプログラミングをやり始めたとき、誰もが一度は嫌になるあの謎のデータ型。 "LPCTSTR"なんてのはその典型例です。 しかし、これが何かを知らぬまま放っておいてる、ということが意外とありがちなんですよね。 というわけで、一応簡単に解説しておくことにしよう、と思ったまでです。 ※ 開発環境は、Microsoft Visual C++ 2005 を想定しています。 1.UNICODE 文字コードとはつまり、数値と文字の関係を示したものです。 文字'a'は128で表し、文字'b'は129で表し・・・と文字と数値が一対一で対応して定められています。(数値は適当です) UNICODEも、その文字コードの一種で、古い文字コードのASCIIに比べて新しいものです。 NT系のWindowsには全て対応しているので、現在のほとんどの環境がUNICODE対応となっています。 だったら

  • Windows 版 ActivePerl 5.8.X で日本語のファイル名を使う。

    結論から言うと、UTF-8を内部コードにしているとき、Windows で日語ファイル名を使いたいときは、プログラムの頭でこんな風に宣言すると便利である。 use strict; use encoding 'shiftjis'; use open ':encoding(shiftjis)'; use open ':std'; use File::Spec::Functions; use subs qw(open); sub open { use Encode; return CORE::open(shift,encode('shiftjis',shift),encode('shiftjis',shift)); } Perl 5.8.X では内部コードに UTF-8が使える。しかし、そのために日語のファイル名が正しく扱えないことがある。 たとえば、次のプログラムは何の問題もなく動作する。

    Windows 版 ActivePerl 5.8.X で日本語のファイル名を使う。
  • Windows版 ActivePerl 5.8.X 日本語テキストファイルの操作

    前回の続き、結論から言うと、とりあえず、Windows 版 ActivePerl 5.8.X でシフトJISの日語テキストファイルを操作するときは、次のように宣言したほうがいいということ。 use encoding "shiftjis"; use open ":encoding(shiftjis)"; use open ":std"; map{ binmode($_,":crlf"); } qw/STDIN STDOUT STDERR/; 1行目、use encoding "shiftjis"; --- テキストファイルの中でシフトJISを使うという宣言。そして、標準入出力もシフトJISになる。 2行目、use open ":encoding(shiftjis)"; --- オープンするファイルのデフォルトのエンコードの宣言。つまり、シフトJISとして扱う。 3行目、use open "

  • Windows版 ActivePerl 5.8.X で日本語テキストファイルの標準入出力

    前に、「Windows版 ActivePerl 5.8.X で日語処理をする」でencodingプラグマについて触れた。しかし、この機能には小さなバグがあった。Perl 5.8.7/5.8.8で確認しているので、それ以前のバージョンで発生すると思われる。 たとえば、次のように宣言する。use encoding "shiftjis";こうすると、Perlの次のような動作になる。 ソースファイルはシフトJISコードで扱う 内部コードはUTF-8を使用する 標準入力(STDIN)からシフトJISコードをUTF-8に変換して読み込む 標準出力(STDOUT)へUTF-8をシフトJISコードに変換して書き込む 果たして当にそうなっているのか? 次のプログラムをtest1.plとして保存して、perl test1.pl 実行してみると、STDIN,STDOUT,STDERRのそれぞれのファイルハン

    Windows版 ActivePerl 5.8.X で日本語テキストファイルの標準入出力
  • ActivePerl 5.8.X で日本語処理をする

    Windows で ActivePerl 5.8.X 以降を使う場合、次のように宣言すると、標準入出力やPerl/Tkも日語で使えるようになる。ソースプログラムも Shift-JISコードで保存できるようになって便利。 use encoding 'shiftjis'; ただし、さまざまな問題があるので、以下の点に気をつける必要がある。 use encoding 'shiftjis' の副作用 - https://hardsofttalk.seesaa.net/article/200801article_6.html shiftjis 、CP932、MacJapanese の違い - https://hardsofttalk.seesaa.net/article/200802article_1.html また、Perl/Tkでの日語の例は下記の記事に加筆していく予定。 Perl/Tkで日

  • char、wchar_t(WCHAR)とTCHAR(dinop.com)

    文字列を扱う型としてよく知られているchar型はsizeof(char)=1バイトの型だ。 charに代入できるのは半角文字1文字で、漢字など2バイトからなる全角文字を代入したいとき は(微妙な表現だが)2つのcharが必要になる。 ユニコードを扱うための型として用意されたのがこのwchar_tだ。sizeof(wchar_t)=2バイトの 型でありchar型よりも使用バイト数が多い。 wchar_tに代入できるのはユニコードでの1文字で、半角や全角文字などの区別はない。 ヘッダーの中では以下のように宣言されている。 typedef unsigned short wchar_t; typedef unsigned short WCHAR; // wc, 16-bit UNICODE character つまりwchar_tとWCHARのどちらもunsigned short型として定義されて

  • 1