以下是一些軟體在中文支援方面,利用程式的判斷。
原則上如果是用 gtk 寫的軟體,裡面有呼叫到 gtk_set_locale() 這個函式的話應該都沒問題。
如果是其他的 X 軟體可能要找一下 source 裡面有沒有 setlocale(LC_CTYPE, NULL); 及 XIM 相關函式呼叫情形。如果有遵照正統做法, xcin2.5 應該都可以跟它搭配良好。
Qt 沒碰過,所以不知道他怎麼運作。不過猜想 XIM 這段應該跟 gtk 大同小異。
用 xforms 寫的軟體應該會有問題。
用 X11R6.4 版以後的 Xt/Xaw 寫的軟體應該是沒問題, 記得在 .Xdefaults 裡頭加入 *international:true 、*fontSet:-*-iso8859-1,-*-16-*-big5-0 等等。
用 fltk 寫的軟體似乎也沒支援 XIM。
在FreeBSD下寫程式,結果發現一個中文的問題, 例如字串中包含這"許"這個字,因為許字的下半碼是 ascii中的\符號,結果就會造成錯誤,請問這種情形 應該如何解決?又還有沒有其他的碼有這種問題?
在程式中該字前加一個 '\',還有很多有這個問題呢,如下:
5C +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F A0 ﹏ 兝 α 么 功 吒 吭 沔 坼 歿 俞 枯 苒 娉 珮 B0 豹 崤 淚 許 廄 琵 跚 愧 稞 鈾 暝 蓋 墦 穀 閱 璞 C0 餐 縷 擺 黠 孀 髏 躡 ツ �\ 尐 佢 汻 岤 狖 垥 柦 D0 胐 娖 涂 罡 偅 惝 牾 莍 傜 揊 焮 茻 鄃 幋 滜 綅 E0 赨 塿 槙 箤 踊 嫹 潿 蔌 醆 嬞 獦 螏 餤 燡 螰 駹 F0 礒 鎪 瀙 酀 瀵 騱 酅 贕 鱋 鱭
'\' 的 ASCII code 是 \0x5c,從 [\0xa1-\0xf9][\0x5c] 都會有這個問題。
#!/usr/bin/perl
#
# create code table (Big5) [\0xa1-0xf9][\0x40-\0x7e\0xa1-\0xfe]
#
# 繁體中文 (Big5) 文字內碼表的產生
open (OUT, "> big55c.txt"); select OUT;
# 文字內碼表的產生
# 開頭的表示
print "\n5C ";
print "+0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\n";
$c = 1; # 1行文字數(16文字)
$head = "";
$line = "";
for ($c1 = 0xA0; $c1 i<= 0xF9; $c1++) { # $c1 是第一個位元 [\0xa1-\0xf9]
$c2=0x5c;
# 開頭第一個字
if ("$head" eq "") {
$head = sprintf ("%02X ", $c1);
}
$line .= " "; # 文字間的空白
if ($c1 == 0xA0) {
$line .= " ";
} else {
$line .= pack("CC", $c1, $c2);
}
if ($c == 16 || $c1 ==0xf9) { # 16文字表示一行
print "$head$line\n";
$head = "";
$line = "";
$c = 1;
} else {
$c++;
}
}
close(OUT);
exit;