請問使用 perl 編寫 curses (libcurses-perl)能夠以中文顯示嗎?

歡迎提問 debian desktop 相關問題,何謂 desktop ? 舉凡您日常生活會用到的部份,如上網 ( www 、 bbs ..) 、程式設計、繪圖...等等。 通常以 X Window 環境底下問題為主。

請問使用 perl 編寫 curses (libcurses-perl)能夠以中文顯示嗎?

文章deja_vu » 週五 9月 14, 2007 5:29 pm

各位好:
最近在 Colinux/Debian 4.0 下,想要編寫 perl 程式做為工作上的應用。要考慮將來要讓其他同事使用,所以想以 curses 的方式寫個介面。但是我發現了一個問題,就是我的程式在中文字的部份是亂碼。我想突破這一點,在網上搜尋了幾個小時,只搜尋到在 C 語言方面, ncurses 有支援 utf8 的編繹。而 perl 只有提到如何使用 utf8 ,這一點是確定的(像是 perl/tk,我就可以顯示中文)。若沒有相關的解決方式我想我就要考慮使用 perl/tk 了。
使用 perl 是看上它對於文字處理的強項,加上搭配 Octave 及 Latex 出公司用的文件,可以達成我多年的想法。不是科班出身,是要再努力一些才行呀!
debian 每天成長的小電腦
testing 版--->成長的動力來源
deja_vu
可愛的小學生
可愛的小學生
 
文章: 41
註冊時間: 週一 4月 18, 2005 9:48 am

文章訪客 » 週五 9月 14, 2007 6:53 pm

ncurse 要用 libncursesw5 吧?
預設的 libncurses5 應該不能用 UTF-8
訪客
 

文章訪客 » 週五 9月 14, 2007 6:54 pm

其實可直接用 dialog / whiptail 或許輕鬆一點。
訪客
 

文章deja_vu » 週日 9月 16, 2007 12:19 pm

事實上,我使用了 Curses::UI 這個模組,如基本的 menu、window、dialog 的功能都有。而 libcurses-perl 是 perl 與 ncurses 聯絡的介面模組,以 perl 的語法去操作。
在我提出的中文亂碼,有點像是中文編碼找不到字型的感覺。我想再去找一些資料好了,謝謝各位提供的寶貴建議。
debian 每天成長的小電腦
testing 版--->成長的動力來源
deja_vu
可愛的小學生
可愛的小學生
 
文章: 41
註冊時間: 週一 4月 18, 2005 9:48 am

文章deja_vu » 週五 9月 21, 2007 3:28 pm

回報:
我在家中的 Debian 4.0 (養了快 5 年了 ),在調整全區環境為 LANG=zh_TW.UTF-8 後,使用 rxvt-unicode ,可以把我寫的程式中的中文顯示正常了。我也發現,原本我在使用 mc 中的亂碼,也正常了。在原本在 LANG=zh_TW.Big5 下會造成 dselect 的天花亂碼(只有兩三中文字是正常)的症狀也治好了(有正常的中文)。所以算解決了一半。
但是
我在 colinux/Debian 4.0 (在公司的環境)以相同的設定,卻只能解決 mc 的部份。而我寫的程式和 dselect 一樣是亂碼。這下子可傷腦筋了,因為我家中的電腦因為調整了無數次(也是為了中文),我都不清楚為什麼依此次的設定可以正常的運作。但是無法複製解決方案。
在此是留下記錄,使用 libcurses-perl 是可用使用中文的。至於怎麼達到的,我自己也不清楚。

所以想問,是否有辦法把 dselect 在中文環境下的可以正常的使用。若能解決,或許就是最終的解決方案了。
設定:
圖檔
mc :
圖檔
dselect:
圖檔
debian 每天成長的小電腦
testing 版--->成長的動力來源
deja_vu
可愛的小學生
可愛的小學生
 
文章: 41
註冊時間: 週一 4月 18, 2005 9:48 am

文章mason » 週五 9月 21, 2007 3:55 pm

很土砲的方法:

開一個 crxvt-big5 的 terminal 起來
然後 LC_ALL=zh_TW.Big5 dselect

不過,習慣能改的話,還是改用 aptitude 吧
debian etch 的發行說明裡面就已經建議改用 aptitude 了
所以我猜 dselect 的維護工作應該沒有什麼人有熱情去接手吧。
skype:dantemason
http://blog.sikazozo.org
頭像
mason
快樂的大學生
快樂的大學生
 
文章: 547
註冊時間: 週二 9月 10, 2002 3:40 pm
來自: SIDE 3

文章deja_vu » 週六 9月 22, 2007 5:03 am

我想修正
我回到家之後,想重新再找解決方案,才發現。 dselect 是在設定為 LANG=zh_TW.Big5 (crxvt-big5 之下)之後才正常顯示,在此修正。而在 crxvt-big5 下啟動 rxvt-unicode 再更改 LANG=zh_TW.UTF-8 才可以在 UTF-8 之下使用中文版的 dselect 。我發現,在純 Debian4.0 下, crxvt 已經移除套件了,再這裡要回報一下。
我想討論的是,在 rxvt-unicode 使用 UTF-8 的環境,編寫呼叫 ncurese 的 perl 程式。其中想加入中文內容以方便使用者使用。
以下是參考 Curses::UI 的說明,加上"測試"二字的畫面。
圖檔
debian 每天成長的小電腦
testing 版--->成長的動力來源
deja_vu
可愛的小學生
可愛的小學生
 
文章: 41
註冊時間: 週一 4月 18, 2005 9:48 am


回到 debian desktop

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客