nDiki : ISO-2022-JP

ISO-2022-JP

RFC1468 で規定されている文字符号化方式

関連情報

2003年12月12日 (金)

[ Java ] Unicode (UCS) -> 別の charset

Java の String を 'abc' なら US-ASCII (ANSI_X3.4-1968)に、'あいう' なら ISO-2022-JP にしたいという話。 やっぱり文字列中の全ての文字について候補の charset に含まれているか見ていくしかないのか?

Mew だとちゃんと、US-ASCIIだけならus-ascii で、日本語が含まれていれば iso-2022-jp でメールを送ってくれるがここら辺はどうやっているんでしょ。 ソースを見てみるか。

[ 12月12日全て ]

2004年1月25日 (日)

[ WiKicker ] 通知メールの Subject: フィールドのエンコーディング修正

WiKicker には通知メールの Subject: フィールドがたまに壊れている問題があるのだが、ずっと放置しておいたままだった。 そろそろ次のバージョンをリリースしたいと思うので、今回修正しておく。

結果半日かかってしまった。

MIME::Words::encode_mimewords

まず現在エンコーディングに使っている MIME::Words::encode_mimewords (5.404)であるが、マニュアルを見ると charset によってはマズいエンコーディングを吐くらしい。 WiKicker で Subject: ヘッダが壊れるのも、この問題のせい。 文字境界を無視してぶったぎってエンコードされてしまう。 ということで、自前でエンコードする事にする。

自前エンコーダ

まぁたいしたものではないが。 最初はエンコードする必要のある部分だけ encoded-word にする事も考えたのだが、面倒なのでやめ。 全部エンコードしてしまう事にする。 エンコーディングも最初は、"Q" encoding で実装しはじめたのだが(MIME::Words のデフォルトがそうなので、WiKicker でもそれを使っていた)ちょっと面倒なので、"B" encoding に変更。

タイトルの途中に空白が入ってしまう?

で、テスト。うーん。途中に余分な空白が入ってしまうな。 mew で受信したメールを見ると folding のところで余分な空白が入って表示される。 RFCとか見ても encoded-word に挟まれた CRLF SPACE は無視されるはずなんだけれどなぁ。

UTF-8 の代わりに ISO-2022-JPにしてみたりとか、エンコーディングを変えてみたり(Q or B)したのだが変わらず。 他から受けとっているメールは問題ないから、mew の問題でもなさそうだし。

ん? mew の inbox を確認してみると、他のソフトからのは \n, space でフォールディングされているな。 今書いているコードから送ったやつは \r\n, space でフォールディングされている。 RFC的には CRLF space では?

問題は別のところに

WiKicker で \r\n, space でフォールディングしているところを \n, space でフォールディングするようにしたら直る。 けど、これでいいのかな?

って良く考えたら、他の部分はヘッダでも本文でも改行には \n を使っているんだった(Perl のヒアドキュメントを使っているので)。 ということは今まで、それを標準入力から受けとった sendmail が LFCRLF にしてくれていたのか。 あまり深い事考えてなかったな。 今回はフォールディングのところだけで CRLF にしたため 一個余分に CR がついてしまい、それがタイトルの文字列中の空白として表示されてしまったと。

結局疑うべきは自分のコード。

[ 1月25日全て ]

2004年7月23日 (金)

プロジェクト関連ドキュメントを TeX

現在進行中のプロジェクトの一つがそろそろ大詰め。 ドキュメント書きに突入。 前回までは過去の方法を踏襲して MS Word ベースだったのだが、自分がマネージャーになった今期からは全面的に TeX ベースへ移行させる。

LinuxWindows でそれぞれ

を用意。 Makefile は時間がなかったので GNUmakefile と Makefile を作って Linux 用と Windows 用の両方作ったのだが、後々面倒なので一本化したい。

[ 7月23日全て ]

2010年8月26日 (木)

今日のさえずり: 改札通ってすぐ面舵いっぱいしない! ようそろ!

  • 08:19 こんな時間にガッテン。
  • 10:30 オリジナル Notepad++ って ISO-2022-JP (と EUC-JP) に対応していないのか。 pLaTeX2e ソースファイル編集するのに困るんです。
  • 10:39 Evernote for Android 1.5.1 きた。バグフィックスか何か?
  • 12:04 おにぎり 350円。 (@ ファミリーマート神田佐久間町店) http://4sq.com/biJuCj
  • 15:06 朝用意してくれたおやつに、なぜか白い恋人が。
  • 17:36 File::Slurp::read_file で binmode と指定するところで bin_mode とやっていて、入力が1バイト足りずにもがいていたところ。
  • 18:42 MongoDB や CouchDB とかって大きなファイルつっこんでも大丈夫なのかな。JSON な CouchDB より BSON な MongoDB の方がイケてそうな気はするのだが。
  • 19:13 @babie 情報ありがとうございます。100MB 動画も no problem ってありますね。これなら検討しているシステムの候補にできそうです。
  • 19:29 そこ、改札通ってすぐ面舵いっぱいしない! ようそろ!
  • 22:55 えこひいきって、どこらへんがエコ?
  • 24:26 頭上のシーリングライトの中の部品がゴトッと音をたてて、そのカバーに落下した。メッチャびっくりした。
  • 24:28 前に直したスイッチボックスが取れたのかな。今晩はもう確認するつもりはなし。
[ 8月26日全て ]

2010年9月9日 (木)

ptexlive で UTF-8 pLaTeX2e 文書対応

LaTeX2e 美文書作成入門

また久しぶりに LaTeX2e でドキュメントを作成したくなった。 今まで Linux でも Windows でもコンパイルが通るように ISO-2022-JP で書いていたのだが差分も取りにくいし、そろそろ UTF-8 にしたい。 調べたら Linux なら ptexlive で UTF-8 対応の pLaTeX2e が使える模様。Windows については W32TeX が対応済みのようだ。

Debian GNU/Linux では ptexlive がないので、野良インストールした。

~/tmp/ptexlive の下でビルドして /usr/local/texlive/p2009 の下にインストール。

以下手順メモ:

依存 Debian パッケージをインストール

手元の環境では以下を追加インストールした。

  • libxt-dev
  • libxaw7-dev
  • gs-cjk-resource
  • poppler-data

ptexlive と TeX Live をダウンロードしてビルド・インストール

~/tmp/ptexlive を作りファイルをダウンロード。 ptexlive アーカイブを展開、TeX Live の方は ISO イメージを展開してマウントする。

 cd
 mkdir -p tmp/ptexlive
 cd tmp/ptexlive
 wget http://tutimura.ath.cx/~nob/tex/ptexlive/ptexlive-20100711.tar.gz
 wget http://www.t.ring.gr.jp/pub/text/CTAN/systems/texlive/Images/texlive2009-20091107.iso.xz
 tar zxvf ptexlive-20100711.tar.gz
 7za e texlive2009-20091107.iso.xz
 mkdir texlive
 mount -t iso9660 -o loop texlive2009-20091107.iso $PWD/texlive

(2010年9月18日追記: ここで TeX live をインストールする)

次に ptexlive を展開してディレクトリに移動して ptexlive.cfg を用意し編集する。

 cd ptexlive-20100711
 cp ptexlive.sample ../ptexlive.cfg
 emacs ../ptexlive.cfg

変更したところは以下。

そしてビルド。なお既存の ~/.texmf-var があると正しくないビルドができる可能性があると警告されるので移動しておく。

 mv ~/.texmf-var ~/.texmf-var-tmp
 make
 make otf

最後にテストがこけるがこれは無視してもよいらしい。

そしてインストール。

 su
 make install
 exit

以上で完了。

使用する

環境 PATH を通す。Debian GNU/LinuxTeX 関連パッケージより優先して使うように既存の PATH の前に設定。

 export PATH=/usr/local/texlive/p2009/bin/i686-pc-linux-gnu/@:$PATH

UTF-8 なサンプル pLaTeX2e ファイルを作成して platex、dvipdfmx が通ることを確認。

Happy TeXing!

[ 9月9日全て ]

About

Naney Naneymx

Naney (なにい) です。株式会社MIXIで SNS 事業の部長をしています。

※本サイトの内容は個人的見解であり所属組織とは関係ありません。

Process Time: 0.04974s / load averages: 0.76, 0.73, 0.72