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_entry
ruby ~/z.rb ~/Mail/ntcir-archive/[0-9]* > mbox.20060307
mhonarc -msgsep '^Received:' -rcfile ntcir.mrc mbox.20060307
mhonarc -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.20001213
get ntcir ntcir.20001220
get ntcir ntcir.20010107
get ntcir ntcir.20010118
get ntcir ntcir.20010121
get ntcir ntcir.20010219
get ntcir ntcir.20010301
get ntcir ntcir.20010305
get ntcir ntcir.20010306
get ntcir ntcir.20010313
get ntcir ntcir.20010321
get ntcir ntcir.20010330
get ntcir ntcir.20010406
get ntcir ntcir.20010418
get ntcir ntcir.20010426
get ntcir ntcir.20010430
get ntcir ntcir.20010521
get ntcir ntcir.20010615
get ntcir ntcir.20010712
get ntcir ntcir.20010719
get ntcir ntcir.20010722
get ntcir ntcir.20010802
get ntcir ntcir.20010924
get ntcir ntcir.20010928
get ntcir ntcir.20011011
get ntcir ntcir.20011106
get ntcir ntcir.20020510
get ntcir ntcir.20020515
get ntcir ntcir.20020710
get ntcir ntcir.20020715
get ntcir ntcir.20020718
get ntcir ntcir.20020719
get ntcir ntcir.20020813
get ntcir ntcir.20020830
get ntcir ntcir.20021015
get ntcir ntcir.20021016
get ntcir ntcir.20021031
get ntcir ntcir.20021105
get ntcir ntcir.20021116
get ntcir ntcir.20021120
get ntcir ntcir.20021209
get ntcir ntcir.20021212
get ntcir ntcir.20021221
get ntcir ntcir.20021224
get ntcir ntcir.20021228
get ntcir ntcir.20030108
get ntcir ntcir.20030116
get ntcir ntcir.20030207
get ntcir ntcir.20030226
get ntcir ntcir.20030301
get ntcir ntcir.20030304
get ntcir ntcir.20030305
get ntcir ntcir.20030307
get ntcir ntcir.20030313
get ntcir ntcir.20030317
get ntcir ntcir.20030322
get ntcir ntcir.20030326
get ntcir ntcir.20030328
get ntcir ntcir.20030331
get ntcir ntcir.20030401
get ntcir ntcir.20030409
get ntcir ntcir.20030411
get ntcir ntcir.20030417
get ntcir ntcir.20030506
get ntcir ntcir.20030507
get ntcir ntcir.20030511
get ntcir ntcir.20030516
get ntcir ntcir.20030824
get ntcir ntcir.20040213
get ntcir ntcir.20040302
get ntcir ntcir.20040307
get ntcir ntcir.20040324
get ntcir ntcir.20040326
get ntcir ntcir.20040327
get ntcir ntcir.20040329
get ntcir ntcir.20040330
get ntcir ntcir.20040331
get ntcir ntcir.20040401
get ntcir ntcir.20040406
get ntcir ntcir.20040407
get ntcir ntcir.20040408
get ntcir ntcir.20040413
get ntcir ntcir.20040416
get ntcir ntcir.20040417
get ntcir ntcir.20040418
get ntcir ntcir.20040501
get ntcir ntcir.20040502
get ntcir ntcir.20040503
get ntcir ntcir.20040505
get ntcir ntcir.20040509
get ntcir ntcir.20040512
get ntcir ntcir.20040515
get ntcir ntcir.20040516
get ntcir ntcir.20040518
get ntcir ntcir.20040521
get ntcir ntcir.20040522
get ntcir ntcir.20040523
get ntcir ntcir.20040525
get ntcir ntcir.20040526
get ntcir ntcir.20040616
get ntcir ntcir.20040809
get ntcir ntcir.20040810
get ntcir ntcir.20040822
get ntcir ntcir.20040826
get ntcir ntcir.20040915
get ntcir ntcir.20040928
get ntcir ntcir.20041001
get ntcir ntcir.20041004
get ntcir ntcir.20041020
get ntcir ntcir.20041024
get ntcir ntcir.20041105
get ntcir ntcir.20041118
get ntcir ntcir.20050130
get ntcir ntcir.20050301
get ntcir ntcir.20050330
get ntcir ntcir.20050405
get ntcir ntcir.20050420
get ntcir ntcir.20050802
get ntcir ntcir.20050810
get ntcir ntcir.20050822
get ntcir ntcir.20050905
get ntcir ntcir.20050912
get ntcir ntcir.20050926
get ntcir ntcir.20050930
get ntcir ntcir.20051028
get ntcir ntcir.20051110
get ntcir ntcir.20051203
get ntcir ntcir.20051206
get ntcir ntcir.20051208
get ntcir ntcir.20060208
get ntcir ntcir.20060220
get ntcir ntcir.20060301
get ntcir ntcir.20060307
ARGV.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
end
end
% mhonarc --msgsep '^Received:' -spammode z
...平成17年3月の時点で日本におけるWebデータ総量は18.4TB、ファイ
ル総数は4億5000万ファイルであると推定...