01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
410 403sage 03/07/15 23:07 何が問題なのは判明したので報告 -------------------- 問題点: Win -> X の方向にコピーする際、Xutf8TextListToTextProperty(..., XCompoundTextStyle, ...) でUTF-8文字列から CompoundText を作成するが、 GB 2312-80 と JIS X 0208-1983 に共通する文字 (ひらがな、カタカナ) や Unificate された漢字が中文の文字集合 (GB 2312-80) として変換されてしま う。 また、X 側でクリップボードへコピーを行なうと、自動的に Win 側へもコピー し、これを X 側でペーストしようとすると Win -> X へ変換作業が入るため、 見た目上 X -> X であっても同様の問題が発生する。 X -> Win の方向では Win の MultiByteToWideChar(CP_UTF8, ...) が適切に 処理するので問題は発生しない。 例: コピーした文字: "あいう" UTF-8 : 0xe3 0x81 0x82 0xe3 0x81 0x84 0xe3 0x81 0x86 CompoundText : 0x1b 0x24 0x28 0x41 0x24 0x22 0x24 0x24 0x24 0x26 CompoundText の最初の 4byte は、"ESC $ ( A" であり、これは G0 に GB 2312-80 を指示するという意味。411 403sage 03/07/15 23:08 解決方法: 1. GetClipboardData(CF_UNICODE) ではなく、CF_TEXT で sjis のままデータ を取得し、これを XmbTextListToTextProperty() で CompoundText にする。 2. Xutf8TextListToTextProperty(..., XCompoundTextStyle, ...) で UTF-8 から CompoundText を作成する際、LC_CTYPE を参照し、Unificate されている文字は適切な文字集合を優先する。 例えば、GB 2312-80 と JIS X 0208-1983 の両方に適合する場合、 LC_CTYPE が ja_JP.eucJP の場合は JIS X 0208-1983 を、zh_CN.GB2312 の場合は GB 2312-80 を文字集合として指示、というように変換する。 3. X アプリがクリップボードを参照する際、XUTF8StringStyle のスタイルを request する。 ... { "JISX0201.1976-0", NULLQUARK, jisx0201_mbtowc, jisx0201_wctomb }, { "TIS620-0", NULLQUARK, tis620_mbtowc, tis620_wctomb }, { "GB2312.1980-0", NULLQUARK, gb2312_mbtowc, gb2312_wctomb }, { "JISX0208.1983-0", NULLQUARK, jisx0208_mbtowc, jisx0208_wctomb }, { "JISX0208.1990-0", NULLQUARK, jisx0208_mbtowc, jisx0208_wctomb }, ...% tar zxvf db-4.4.20.tar.gz% cd db-4.4.20/build_unix% env CC=gcc ../dist/configure --prefix=$HOME% make% make install% env DB_FILE_INCLUDE=$HOME/include DB_FILE_LIB=$HOME/lib perl Makefile.PL LIB=$HOME/lib/perl5 INSTALLMAN3DIR=$HOME/man/man3% make CC=gcc LD=ld CCCDLFLAGS= OPTIMIZE=% make install% cd $MTDIR/extlib% ln -s ~/lib/perl5/sun4-solaris .% cd $MTDIR% mkdir ./data/% cp mt-config.cgi-original mt-config.cgi% cd $MTDIR/extlib% tar zxvf /tmp/Mail-Sendmail-0.79.tar.gz% mv Mail-Sendmail-0.79/ Mail日本語版MTをインストールしたのですが、その環境で日英両言語用の2つのブログを提供することは可能でしょうか?# 管理画面などは日本語でも構わないのですが。。。return __mbrtowc (NULL, s, n, ps ?: &internal);fcts = get_gconv_fcts (_NL_CURRENT_DATA (LC_CTYPE));/* Do a normal conversion. */inbuf = (const unsigned char *) s;endbuf = inbuf + n;if (__builtin_expect (endbuf < inbuf, 0)) endbuf = (const unsigned char *) ~(uintptr_t) 0;status = DL_CALL_FCT (fcts->towc->__fct, (fcts->towc, &data, &inbuf, endbuf, NULL, &dummy, 0, 1));main -> mx_open_mailbox -> mh_read_dir -> maildir_parse_dir (opendir, readdir) -> maildir_parse_entryruby ~/z.rb ~/Mail/ntcir-archive/[0-9]* > mbox.20060307mhonarc -msgsep '^Received:' -rcfile ntcir.mrc mbox.20060307mhonarc -rmm 110-113 116 117:0 c*^Sender: owner-ntcir@nii.ac.jp| tee -a $HOME/cvswork/ntcir-public_html/archive/ntcir/mbox.cur | $MHONARC -add -rcfile $HOME/cvswork/ntcir-public_html/archive/ntcir/ntcir.mrc -outdir $HOME/cvswork/ntcir-public_html/archive/ntcir~ntcadm/.ssh2/{authorization,id_dsa_openssh.pub}14 * * * * cd ~/cvswork/ntcir-public_html/archive/ntcir/ && rsync -e "ssh -i $HOME/.ssh/id_dsa_forresearch" -a --delete-excluded --exclude=CVS . ntcadm@research:public_html/archive/ntcir/get ntcir ntcir.20001213get ntcir ntcir.20001220get ntcir ntcir.20010107get ntcir ntcir.20010118get ntcir ntcir.20010121get ntcir ntcir.20010219get ntcir ntcir.20010301get ntcir ntcir.20010305get ntcir ntcir.20010306get ntcir ntcir.20010313get ntcir ntcir.20010321get ntcir ntcir.20010330get ntcir ntcir.20010406get ntcir ntcir.20010418get ntcir ntcir.20010426get ntcir ntcir.20010430get ntcir ntcir.20010521get ntcir ntcir.20010615get ntcir ntcir.20010712get ntcir ntcir.20010719get ntcir ntcir.20010722get ntcir ntcir.20010802get ntcir ntcir.20010924get ntcir ntcir.20010928get ntcir ntcir.20011011get ntcir ntcir.20011106get ntcir ntcir.20020510get ntcir ntcir.20020515get ntcir ntcir.20020710get ntcir ntcir.20020715get ntcir ntcir.20020718get ntcir ntcir.20020719get ntcir ntcir.20020813get ntcir ntcir.20020830get ntcir ntcir.20021015get ntcir ntcir.20021016get ntcir ntcir.20021031get ntcir ntcir.20021105get ntcir ntcir.20021116get ntcir ntcir.20021120get ntcir ntcir.20021209get ntcir ntcir.20021212get ntcir ntcir.20021221get ntcir ntcir.20021224get ntcir ntcir.20021228get ntcir ntcir.20030108get ntcir ntcir.20030116get ntcir ntcir.20030207get ntcir ntcir.20030226get ntcir ntcir.20030301get ntcir ntcir.20030304get ntcir ntcir.20030305get ntcir ntcir.20030307get ntcir ntcir.20030313get ntcir ntcir.20030317get ntcir ntcir.20030322get ntcir ntcir.20030326get ntcir ntcir.20030328get ntcir ntcir.20030331get ntcir ntcir.20030401get ntcir ntcir.20030409get ntcir ntcir.20030411get ntcir ntcir.20030417get ntcir ntcir.20030506get ntcir ntcir.20030507get ntcir ntcir.20030511get ntcir ntcir.20030516get ntcir ntcir.20030824get ntcir ntcir.20040213get ntcir ntcir.20040302get ntcir ntcir.20040307get ntcir ntcir.20040324get ntcir ntcir.20040326get ntcir ntcir.20040327get ntcir ntcir.20040329get ntcir ntcir.20040330get ntcir ntcir.20040331get ntcir ntcir.20040401get ntcir ntcir.20040406get ntcir ntcir.20040407get ntcir ntcir.20040408get ntcir ntcir.20040413get ntcir ntcir.20040416get ntcir ntcir.20040417get ntcir ntcir.20040418get ntcir ntcir.20040501get ntcir ntcir.20040502get ntcir ntcir.20040503get ntcir ntcir.20040505get ntcir ntcir.20040509get ntcir ntcir.20040512get ntcir ntcir.20040515get ntcir ntcir.20040516get ntcir ntcir.20040518get ntcir ntcir.20040521get ntcir ntcir.20040522get ntcir ntcir.20040523get ntcir ntcir.20040525get ntcir ntcir.20040526get ntcir ntcir.20040616get ntcir ntcir.20040809get ntcir ntcir.20040810get ntcir ntcir.20040822get ntcir ntcir.20040826get ntcir ntcir.20040915get ntcir ntcir.20040928get ntcir ntcir.20041001get ntcir ntcir.20041004get ntcir ntcir.20041020get ntcir ntcir.20041024get ntcir ntcir.20041105get ntcir ntcir.20041118get ntcir ntcir.20050130get ntcir ntcir.20050301get ntcir ntcir.20050330get ntcir ntcir.20050405get ntcir ntcir.20050420get ntcir ntcir.20050802get ntcir ntcir.20050810get ntcir ntcir.20050822get ntcir ntcir.20050905get ntcir ntcir.20050912get ntcir ntcir.20050926get ntcir ntcir.20050930get ntcir ntcir.20051028get ntcir ntcir.20051110get ntcir ntcir.20051203get ntcir ntcir.20051206get ntcir ntcir.20051208get ntcir ntcir.20060208get ntcir ntcir.20060220get ntcir ntcir.20060301get ntcir ntcir.20060307ARGV.each do |file| open(file) do |io| io.each do |line| #p line break if line =~ /^$/ end body = io.read if body =~ /\A\s*--\n\n/ puts body.sub(/\A\s*--\n\n/, "") end endend% mhonarc --msgsep '^Received:' -spammode z...平成17年3月の時点で日本におけるWebデータ総量は18.4TB、ファイル総数は4億5000万ファイルであると推定...