LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
楼主: tawangwuhen

Gentoo console 中文化----zhcon问题(基本解决)

[复制链接]
发表于 2007-8-18 18:26:49 | 显示全部楼层
- app-i18n/zhcon-0.2.6 (masked by: ~x86 keyword)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-18 20:24:34 | 显示全部楼层
谢谢版主及各位朋友的指导。

我按照版主的方法先emerge autounmask,然后autounmask app-i18n/zhcon-0.2.6(autounmask好像是一个去屏蔽的工具啊),然后再emerge zhcon,顺利地安装上了zhcon 。但是在执行zhcon后,屏幕上方只出现了一个大大的闪动的白色方块,好像是光标,敲击键盘可以看到光标后移,但没有任何显示,只好exit退出。
凭直觉,我觉得一方面可能是显示分辨率有问题,执行Zhcon后明显感到Zhcon运行,更改了显示分辨率;第二,Zhcon肯定是运行了,因为Exit可以退出,但为什么敲击键盘没有任何回显呢?
回复 支持 反对

使用道具 举报

发表于 2007-8-18 20:48:29 | 显示全部楼层
内核汉化似乎已经停止了,只能用zhcon在控制台下输入中文了。不过zhcon的兼容性和稳定还有待提高。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-18 21:36:47 | 显示全部楼层
Post by Kingo
内核汉化似乎已经停止了,只能用zhcon在控制台下输入中文了。不过zhcon的兼容性和稳定还有待提高。

不需要内核汉化,我想问一下linux的控制台本地化工作怎么样了,设置变量LC_ALL本地化后能否显示处理中文。我设置了变量LC_ALL=zh_CN.GBK,本地化后显示乱码,是否安装了控制台下的中文字体就可以处理汉字了?
回复 支持 反对

使用道具 举报

发表于 2007-8-18 21:51:04 | 显示全部楼层
乱码问题的一般解决思路:
首先确保你有相应的字体,并正确安装了这些字体。zhcon不存在这个问题。zhcon的字体是自带的。
然后搞清楚原来的信息使用何种编码,搞清楚显示这些信息的程序把这些信息当作什么编码来处理(如果有这个环节的话,比如vim),搞清楚终端把程序输出的信息当作什么编码来处理。

如果3者相同,就肯定没有乱码

文件内容的编码不会随环境变量而变,你搞清楚它们是什么编码的。然后cat一下,如果终端的编码和它一致,就不会乱码。

下面我假设你没有设定LANGUAGE,否则会使讨论变得复杂
LC_ALL(实际是LC_MESSAGES)能影响的程序输出信息的语言和编码。比如你指定的就是zh_CN.GBK,那么程序输出语言就是中国大陆(新加坡也有简体中文)简体中文,编码是GBK。但是为了解决你的问题,那你要告诉大家具体是在什么情况下遇到的乱码。
是仅仅是程序的输出信息乱码,还是ls中文文件名乱码,还是vim打开文本文件乱码?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-18 22:11:41 | 显示全部楼层
谢谢版主的回复,这个帖子快要跑题了,我再重申一下:
1、export LC_ALL=zh_CN.GBK,本地化后date命令显示日期是乱码,more 中文文档是乱码,ls 中文文件名也会是乱码。估计是没有安装中文字体的原因,如何安装中文字体,安装之后是否就可以显示或者处理汉字了?
2、linux 的本地化工作做得怎么样了,设置变量本地化后是否就可以显示中文了?还需要内核汉化吗?
3、按照版主指导,顺利安装上了zhcon,运行之后屏幕上方只显示一个闪动的大大的白色方块,估计是光标,明显不正常嘛。键入字符可以看见光标后移,但没有任何字符回显,无法使用,只好exit退出。为何?
回复 支持 反对

使用道具 举报

发表于 2007-8-18 23:19:55 | 显示全部楼层
我有个问题想问一下,这个东西装了以后除了能在命令行模式下显示中文,有没有办法让linux下的命令也能识别中文,比如移动,删除,复制一个中文名的文件或目录
回复 支持 反对

使用道具 举报

发表于 2007-8-19 22:47:28 | 显示全部楼层
to abcbuzhiming:
Linux 下的几乎所有命令都支持中文,放心好了。你所需要做的是输入这些中文的文件名,这个 zhcon 也带了,包含拼音、五笔,二笔等。

to tawangwuhen:
内核汉化已经是 n 年前的事了,现在的 linux,只要装好就能正常显示中文和处理中文,所以你完全不必担心。顺便说一下,以前的一些老资料总拿内核汉化来说事,其实这是一种误导。显示中文本来是应用程序如终端的事,内核只需要做的是在驱动层面提供控制屏幕显示的接口,为什么要做内核汉化?汉化些什么?本来就是一种错误的技术,以前还被部分人奉为神明。控制台支持中文等多字节语言,以前有 unicon,需要给内核打补丁;目前的 zhcon 可直接利用内核提供的驱动在终端上显示和输入汉字,不需要任何内核补丁。
多语言支持是应用程序的事,目前相当多的应用程序已经支持了多语言,特别是 X 下的应用程序,基于 gtk+/QT 的程序基本已经支持,控制台下的程序,如 ls/rm/cat/cp 等,也没有问题。所以关于显示中文和输入中文的担心完全多余。
zhcon 可以使用的驱动是 vga/fbdev/ggi,这些需要在编译内核里选上。推荐使用 fbdev,即在编译内核时选择上 frame buffer device 支持,这样就应该会显示正常了。
回复 支持 反对

使用道具 举报

发表于 2007-8-19 22:57:03 | 显示全部楼层
如果你是在字符终端里,而不是在X里,那么你必须装好zhcon
并且启动zhcon
在zhcon里执行那些命令

否则,没说的,肯定是乱码

PS:言下之意,你还没有说清楚你是在什么情况下遇到的乱码。所以你的问题还是没法解决
回复 支持 反对

使用道具 举报

发表于 2007-8-19 23:10:45 | 显示全部楼层
借地问一下我的编译错误:
  1. Configuration:
  2.     Target system:             x86_64-pc-linux-gnu
  3.     Source code location:      .
  4.     C++ Compiler:              x86_64-pc-linux-gnu-g++
  5.     C++ Compiler flags:        -O2 -march=k8 -pipe -fomit-frame-pointer -funsigned-char -O2 -DNDEBUG -Wall
  6.     C   Compiler:              x86_64-pc-linux-gnu-gcc
  7.     C   Compiler flags:        -O2 -march=k8 -pipe -fomit-frame-pointer -funsigned-char -O2 -DNDEBUG -Wall
  8.     VGA support:               no
  9.     gpm moues support:         yes
  10.     libggi support:            yes
  11.     unicon support:            no
  12.     zhcon binary dir:          /usr/bin
  13.     zhcon files dir:           /usr/lib64/zhcon

  14. Config complete, now type make to build zhcon.
  15. Good Luck!
  16. Making all in src
  17. Making all in display
  18. fblinear16.cpp: In member function ‘virtual void FBLinear16::RevRect(int, int, int, int)’:
  19. fblinear16.cpp:89: warning: operation on ‘dest32’ may be undefined
  20. fblinear24.cpp: In member function ‘virtual void FBLinear24::RevRect(int, int, int, int)’:
  21. fblinear24.cpp:139: warning: operation on ‘dest32’ may be undefined
  22. fblinear24.cpp:140: warning: operation on ‘dest32’ may be undefined
  23. fblinear24.cpp:141: warning: operation on ‘dest32’ may be undefined
  24. fblinear24.cpp:144: warning: operation on ‘dest32’ may be undefined
  25. fblinear24.cpp:146: warning: operation on ‘dest16’ may be undefined
  26. fblinear24.cpp:151: warning: operation on ‘dest16’ may be undefined
  27. fblinear8.cpp: In member function ‘virtual void FBLinear8::RevRect(int, int, int, int)’:
  28. fblinear8.cpp:66: warning: operation on ‘dest32’ may be undefined
  29. fblinear8.cpp:70: warning: operation on ‘dest16’ may be undefined
  30. fblinear32.cpp: In member function ‘virtual void FBLinear32::RevRect(int, int, int, int)’:
  31. fblinear32.cpp:77: warning: operation on ‘dest32’ may be undefined
  32. big5decoder.cpp: In member function ‘virtual bool BIG5Decoder::IsCode2(char)’:
  33. big5decoder.cpp:30: warning: comparison is always true due to limited range of data type
  34. gbkdecoder.cpp: In member function ‘virtual bool GBKDecoder::IsCode2(char)’:
  35. gbkdecoder.cpp:30: warning: comparison is always true due to limited range of data type
  36. gbkdecoder.cpp: In member function ‘virtual unsigned int GBKDecoder::Index(char, char)’:
  37. gbkdecoder.cpp:36: warning: comparison is always true due to limited range of data type
  38. winime.cpp: In member function ‘int WinIme::MatchWord(char*, int, int)’:
  39. winime.cpp:166: warning: dereferencing type-punned pointer will break strict-aliasing rules
  40. winime.cpp: In member function ‘int WinIme::Search(char)’:
  41. winime.cpp:253: error: cast from ‘char*’ to ‘unsigned int’ loses precision
  42. winime.cpp:274: error: cast from ‘char*’ to ‘unsigned int’ loses precision
  43. make[3]: *** [zhcon-winime.o] Error 1
  44. make[3]: *** Waiting for unfinished jobs....
  45. make[2]: *** [all-recursive] Error 1
  46. make[1]: *** [all-recursive] Error 1
  47. make: *** [all] Error 2
  48. *
  49. * ERROR: app-i18n/zhcon-0.2.6 failed.
  50. * Call stack:
  51. *   ebuild.sh, line 1654:   Called dyn_compile
  52. *   ebuild.sh, line 990:   Called qa_call 'src_compile'
  53. *   ebuild.sh, line 44:   Called src_compile
  54. *   ebuild.sh, line 662:   Called die
  55. *
  56. * emake failed
  57. * If you need support, post the topmost build error, and the call stack if relevant.
  58. * A complete build log is located at '/var/tmp/portage/app-i18n/zhcon-0.2.6/temp/build.log'.
  59. *
复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表