nDiki : charset

charset

RFC

RFC2277 3, RFC2278 2.3.

オクテット列から文字列への変換方法。 例えば、符号化文字集合文字符号化方式の組。

HTMLcharset

HTML 4.01 では charset文字エンコーディング(character encoding)のことを指す (符号化文字集合としては UCS を使用するとしている)。

値に設定できるのは

で定義されているもの(大文字小文字は区別しない)。

java.nio.charset.Charset

16ビットUnicode文字列とバイト列間の写像。

スポンサード リンク

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年4月16日 (金)

TeXSubversion

仕事のドキュメント書き。 「ドキュメント管理用 Subversionリポジトリ作成」にのっとってやってみる(結局前回考えて以降、時間がとれなくて Subversion に投入していなかった)。

今期、プロジェクトでこの方式を採用しようと思っているのだが Windows ユーザと協同作業しようとすると charset の問題があるな。 とりあえずいわゆるJISにしておけば pTeX としては問題ないと思うが、他の作業環境はどうなのだろう。

[ 4月16日全て ]

2004年5月4日 (火)

[ DiKicker ] くっつき BBSをくっつけてみた。

DiKicker でのコメント機能についてだがあらためて実装するのも大変なので、たつを氏のくっつき BBSを組み込んでみた (v1.0rc2)。

ファイルレイアウト

 $HOME/etc/kuttukibbs/kuttukibbs.conf - 設定ファイル (一部変更)
 $HOME/var/log/kuttukibbslog.txt - 管理者用ログファイル

 $HTML/kuttukibbs/kuttukibbs.cgi - CGIプログラム (一部変更)
 $HTML/kuttukibbs/getlog.cgi - (一部変更)
 $HTML/var/kblog/$ID.log
 $HTML/var/kblog/$ID.js

DiKicker への埋め込み

記事毎ののHTMLフラグメントを生成する際に、kuttukibbs.cgi へのリンクと、(getlog.cgi経由での)Feedファイルの読み込み部分を埋め込むように変更。

くっつくFeedファイルが無い場合は commentshortクラスの div要素 (tDiary スタイル)が存在しなくなるようにしたかったのでレンダラではこれを埋め込まず、getlog.cgi で出力するようにした。

ついでに getlog.cgi は

  • charset指定を UTF-8 に修正
  • 違う階層Feedファイルを読むように修正

した。

kuttukibbs.cgi のUTF-8対応

Feedファイル用にコメントを切りつめる際、UTF-8 だと後続バイトが切り捨てられる場合がある。 WiKickerUTF-8 用の substr / length ラッパがあるのでこれを使うように修正。

tDiary テーマの修正

tDiary では日単位でのコメントでありテーマもそれにあわせてデザインされている。 DiKicker では記事単位にコメントをつけるようにしたいので(またそうでないと記事単位で集約した場合に困るので)、使っているテーマ(Nana さんの flower をベースにしているもの)のCSSを修正。

くっつけてみる

テストした範囲ではうまくいっているようだ。 HTMLレンダリング済みの記事はキャッシュが更新されないとコメントするためのリンクが現れないが順次出てくるはず。

くっつきとして見るには要 JavaScript サポート。

[ 5月4日全て ]

2004年5月18日 (火)

Subversion - auto-props

Windows 上での TeX 書きユーザと仲良くするために。

 svn propset svn:eol-style native report.tex

charset はいわゆる JIS で。

auto-props

~/.subversion/config で

 [miscellany]
 enable-auto-propcs =yes
 [auto-props]
 *.tex = svn:eol-style=native

デフォルトで作成される config ではセクション名もコメントアウトされている事に注意。 個人の設定ではなくて、リポジトリとして設定することはできないのかな。

[ 5月18日全て ]

2005年4月10日 (日)

Windows 上での Apache 2.0.53 では PATH_INFOシフト JIS

WiKickerWindows 上での動作確認の続き。 WiKickerPPM パッケージを作成して ActivePerl 5.8.6.811 上にインストール。 依存するモジュールで、ActivePerl に入っていないものは以下の通り。

既に手元で PPM パッケージ化済みなので、これもインストールしておく。

後は RCS をパスの通っているディレクトリに入れてタイムゾーンを設定。

 TZ=JST-9

CGI プログラムとして実行。 お、表示できた。 書き込みはと。

エラー

予想していたけれど、sendmail に依存していたところ。 sendmail が見つからない場合はメールの送信をスキップするように修正。

これでうまく動くかなと思ったら、日本語名のページを作るとうまく表示できない問題を発見。

PATH_INFOシフト JIS で渡される

WiKicker では UTF-8 文字列をURIエスケープして WikiPageURLを生成している。 このURIにアクセスされると WiKicker は、PATH_INFO から WikiName を取り出す。 この文字列がシフト JIS になってしまっている。

Windowsファイル名に使用する charset にあわせて、Apache が変換してしまっているようだ。 調べてみると他の WikiEngine でも同様の問題にあっているという記事が見つかった。

将来の 2.0 系でパッチが取り込まれて修正されるとか、そうでないとか。

現状どうするかなぁ。 WiKicker 側でシフト JIS から UTF-8 に戻すというのもできない事はないけれど、あまりやりたくはないな。 いったんシフト JIS を介しているという時点で、シフト JIS に無い文字の扱いに関する問題をかかえてしまっているし(Apache が)。

対策案:

  • Apache 1.x 系を使う (まだ未確認だが、こちらだと勝手に変換されないらしい)
  • WiKickerPATH_INFO を使わないオプションをつける(URI Query Component は勝手に変換されない)
  • WiKicker 側でシフト JIS から UTF-8 に変換する
[ 4月10日全て ]

2006年3月23日 (木)

Rekisa で TortoiseSVN から日本語ファイルの差分表示

自分の開発チームでは、 Subversion を用いて pLaTeX2e ドキュメントを共同執筆というスタイルが随分多くなってきた (自分が推進しているわけだが)。

チームメンバのほとんどは Windows 上で TortoiseSVN を使っているのだが、内蔵の差分ビューアを使っていると charset を自動判別してくれないので、いわゆる JIS コードで書いている TeX のソースファイルの扱いがちょっと不便である。

そういえば以前はこの問題の声が聞かれたけれど、最近誰も言わなくなったな。 解決したのか、差分とか見なくなったのか。

数行書き換えて、一つの変更点としてコミットメントログを残せる単位でガシガシコミットしてしまう私と一緒に作業している人は、いつもコミット負けしているはずなのだが。

ということで TortoiseSVN で外部差分ビューアとして使えるツールを調べておこう。 まずは差分表示アプリケーション Rekisa。

日本語のファイルの charset を自動判別してくれるし、表示が美しい。 差分を見るには良さそうである。

マージ作業もあわせてするとすると編集機能が必要だが、Rekisa 自身では直接編集できないようだ(外部エディタを呼び出すことはできる)。

マージまですると WinMerge が本命? こちらはまだ試していないので後日。

[ 3月23日全て ]

2010年3月16日 (火)

今日のさえずり - 紫のハンドタオルを口に当てた人が電車から下りてきた

2010年03月15日

  • 09:33 JR 3月13日にダイヤ改正したんだっけ。先週とちょっと電車の時間が違ってあれって思った。
  • 09:53 ヨドびの公式サイトができたって。 (@ ヨドバシカメラマルチメディアAkiba) http://4sq.com/77WGwe
  • 15:01 CoTweet サインアップしてみた。
  • 15:02 ヨドびも Twitter やってるんだ。 RT @yodobi: @Naney わーい!ヨドびちゃんも仲間入りです。よろしくお願いします!
  • 17:25 お茶 103円。 (@ ファミリーマート神田佐久間町店) http://4sq.com/biJuCj
  • 20:17 あー、今日の夜何食べるかまだきまらない(会社で食べるつもりだったけど予想外にキリがついたので退社済み)。
  • 20:20 隣の人が15分以上、中古 CD のシールを剥がして残った糊を猿のようにペタペタやってる。
  • 20:25 ちょっと雨。さぼてんにした。 (@ アトレ大井町) http://4sq.com/8jv27N
  • 23:10 おサイフケータイ対応ゴールドポイントカード削除。
  • 23:20 おサイフケータイ Edy のサービス登録削除。
  • 23:34 何もしていないブログマーケットを退会しようと思ったが、退会機能がない。FAQ によると問い合せフォームを使えと。
  • 24:36 Gmail の特定のラベルに対応する Mew 上の IMAP ディレクトリを howm-search-path に指定しておけばウハウハじゃんと思ったが検索できなかった。そうか charset が違うんだよな。惜しい。

2010年03月16日

  • 09:33 紫のハンドタオルを口に当てた人が電車から下りてきて目を丸くした。
  • 09:36 もしかしてクーラーかかってる? この京浜東北線
  • 09:43 @junjun_ あ、やっぱりクーラーかかってますか。上着きていると暑いぐらいなので、クーラー入っていると確かに快適です。
  • 09:44 RT @miyawaki: みんなでブログ更新しましょう方式って、だいたいうまくいかないよね。なんでだろう?
  • 12:13 オーブントースター見にきた。 (@ ヨドバシカメラマルチメディアAkiba) http://4sq.com/77WGwe
  • 12:24 オーブントースター第1候補はサンヨー SK-CW12 かな。3月19日まで3310円。
  • 12:34 ビッグマックセット(昼食) 590円。 (@ マクドナルド秋葉原昭和通り店) http://4sq.com/cVnVl2
  • 13:29 Evernoteノートブックの共有ってもしかして「閲覧のみ」だとデスクトップには(read only とかで)同期されないの?
  • 16:18 C++ ソースコードUncrustify したら、1行コメントの次の行のコードまでコメントアウトされていて驚愕した。
  • 16:41 やばし。スコッティ切れた。
  • 21:03 I'm at 秋葉原駅 (秋葉原駅, 千代田区) w/ 6 others. http://4sq.com/68fhHr
  • 21:33 ヤマダ電機 3480円だった。
  • 23:59 Evernote への転送/ラベル設定用 Gmail フィルタ・コンタクト設定をした。
  • 25:02 Evernote プレミアムにした。
[ 3月16日全て ]

2010年10月5日 (火)

今日のさえずり: これでセンサスくんともお別れかと思うと寂しい

2010年10月05日

  • 09:23 今日は電車も冷房入ってる。
  • 10:38 C++ コードリーディングの日。まずは doxygen 通すか。
  • 12:05 気がついたら昼休み
  • 12:23 ハッピーセットとチーズバーガー 470円。
  • 13:17 今日は後ろの @as_tone がいないのでエアコン入ってる。今日は暑いし、そもそも出社したらすでに入ってたし。
  • 13:37 RT @as_tone: 有明では場内放送で熱中症に気をつけてねって言ってます。RT @Naney: 今日は後ろの @as_tone がいないのでエアコン入ってる。今日は暑いし、そもそも出社したらすでに入ってたし。
  • 14:43 レグザAppsコネクト 対応機種: [テレビ] CELLレグザ X2 / XE2シリーズ。おい CELL REGZA だけか。
  • 14:53 @as_tone なんかスゲー楽しそう。
  • 16:06 なんか1つだけ cpp ファイルの charsetUTF-8 になってる。そして Emacs で shift_jis にしようと思っても諦められてしまう。
  • 16:09 予想通り cpp ファイルに中国語でコメントが入ってた。
  • 16:12 @y_aki 8000行オーバーだったので目視で探すのに一苦労しました。
  • 16:36 @y_aki なるほど iconv -f UTF-16 -t cp932 で iconv: illegal input sequence at position 331642 と出ました(ちなみに UTF-8 じゃなくて BOM あり UTF-16 リトルエンディアンでした)。
  • 17:49 EASEUS Todo Backup が 1.1 になってる。去年死にかけた ThinkPad X31 の内蔵 HDD を外付け USB HDD にマルっとコピーするのに使った。 http://bit.ly/aK3eyY
  • 18:06 ソースコードに「// 既存の手順の……を変更しる!」とか書いてある。2ちゃんねらー?
  • 19:43 テレビ注文してる。
  • 19:50 他店値段出して値引きしていただけたが「2台買う攻撃」は効かなかった。
  • 22:10 エコポイントってオレンジカードと交換できるのか。
  • 22:15 国勢調査入力するか。
  • 22:34 国勢調査インターネット回答完了。直筆より気分的に楽だな、やっぱり。
  • 22:35 国勢調査のサイト、URL 中の拡張子が do だったから Struts?
  • 22:36 これでセンサスくんともお別れかと思うと寂しい。
  • 22:39 センサス君って平成2年(1990年)国勢調査から使われているのか。
  • 22:40 正式にはセンサス君じゃなくて、センサスくんか。
  • 23:02 RT @kokuseichousain: 5年ごとに数十日しか姿を見せないので、まだ赤ちゃんの姿なのです。(^^♪ RT @Naney センサス君って平成2年(1990年)国勢調査から使われているのか。
  • 23:03 ちなみにセンサスくん、前回は全然記憶にない。今回初登場だと思ってた。
  • 23:05 統計局のサイトに「クイズ・ザ・国勢調査」ってページがある。国勢調査もクイズにしちゃえばいいのに。
  • 23:17 ちなみに国勢調査Google Chrome 7.0.536.2 dev on Debian GNU/Linux sid から普通に回答できた。
  • 25:09 YouTube 用アカウントを作成。
  • 25:15Gmail アカウントに YouTube アカウント追加」「YouTube メイン用に専用 Google アカウント作成」「AndroidYouTube アプリに後者アカウントを設定しようとしたら、既に前者がバインドされてしまっていた」
[ 10月5日全て ]

2010年12月20日 (月)

今日のさえずり: 生まれて初めて10円券20枚を行使した

2010年12月20日

  • 10:12 DropboxPortable って開発停止なのか。今の 0.7.110 の状態で使い続けるか迷うところ。 #Dropbox
  • 11:07 週次グループミーティングアジェンダに、いつも「その他」があるのが気になる。
  • 12:09 生まれて初めて10円券20枚を行使した。 (@ 向日葵 和泉町店・カレー食堂) http://4sq.com/gmh7J4
  • 12:16 「またいっぱい貯めてくださいね(ハート)」※注「ささやかな気持ちDESスクラッチ」は350円弁当にはつきません。
  • 12:51 RT @tuiteru: これは楽だ。 nDiki: Gmail 無しの Google アカウントGoogle Contact Manager が使えるようになった http://t.co/rLec9Rt via @Naney
  • 13:22 まだ食後だけど、もう我慢ならなくてお土産にもらった萩の月を食す。
  • 13:26 Subversion / CVS の時は何か面倒な気がしてまずブランチしなかったんだけれど、Git だとホイホイだなあ。
  • 15:13 なんか「後で感想を聞きにくるコーヒー」をいただいた。
  • 15:31 普通かな。香りはあまりしない。味はあまり苦くないマイルド系。 RT @Naney: なんか「後で感想を聞きにくるコーヒー」をいただいた。
  • 19:27 charset を間違えたコミットメッセージの修正で git rebase -i しようとしてはまった。コマンド-ログ行の並びが上ほど古いのを逆と勘違い(メッセージが化けてたこともあって)。何度も違う方を修正しようとしてしまった。
  • 21:13 モバツイ Who's Who!? http://bit.ly/gwqsEY
  • 21:25 モバツイ Who's Who!? ってマイリストに登録する時にメモがつけられるんだ。Twitter に欲しいと思っていたのでいいかも。20文字はちょっと少なめかな。 http://bit.ly/gwqsEY
  • 21:28 モバツイ Who's Who!? でもまだちょっと不安定。プロフィールも出たり出なかったりする。 http://bit.ly/gwqsEY
  • 22:10 うちの会社のサイト、郵便番号が書いてないな。
  • 22:37 LinkedIn ってどんなものかなと思って登録してみた。 http://linkd.in/f9Iri0
  • 22:39 LinkedIn にも Like が。
  • 22:41 @Keiichi_SHIGA 言語別にプロフィール作れるんですね。でも名姓順になるからちょっとイケてない。
  • 23:38 about.me もアカウント作ってみた。 http://bit.ly/ggLun1
[ 12月20日全て ]

About Me

Naney Naney (なにい)です。株式会社ミクシィでマネージャー・プロダクトオーナーをしています。

nDiki1999年1月に始めたコンピュータ日誌を前身とする NaneyWeb 日記(兼パーソナルナレッジベース)です。ちょっとしたノートは nNote にあります。

follow us in feedly

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

月別インデックス
Process Time: 0.063766s / load averages: 0.45, 0.44, 0.47
nDiki by WATANABE Yoshimasa (Naney, Google profile)
Powered by DiKicker