linux busybox中文显示修改说明

1.内核修改 【linux busybox中文显示修改说明】进入内核,执行make menuconfig后
依次进入
File systems--->
Native language support--->
NLS UTF-8
选上NLS UTF-8 保存退出编译内核.
2.busybox修改 修改文件printable_string.c中两处,如下:

while (1) { unsigned char c = *s; if (c == '\0') { /* 99+% of inputs do not need conversion */ if (stats) { stats->byte_count = (s - str); stats->unicode_count = (s - str); stats->unicode_width = (s - str); } return str; } if (c < ' ') break; #if 0 //modify if (c >= 0x7f) break; #endif s++; }

while (1) { unsigned char c = *d; if (c == '\0') break; #if 0 //modify if (c < ' ' || c >= 0x7f) #else if (c < ' ') #endif *d = '?'; d++; }

红色部分为修改部分. 修改 unicode.c函数unicode_conv_to_printable2中
if (unicode_status != UNICODE_ON) { char *d; if (flags & UNI_FLAG_PAD) { d = dst = xmalloc(width + 1); while ((int)--width >= 0) { unsigned char c = *src; if (c == '\0') { do *d++ = ' '; while ((int)--width >= 0); break; } #if 0 //modify *d++ = (c >= ' ' && c < 0x7f) ? c : '?'; #else *d++ = (c >= ' ') ? c : '?'; #endif src++; } *d = '\0'; } else { d = dst = xstrndup(src, width); while (*d) { unsigned char c = *d; #if 0 //modify if (c < ' ' || c >= 0x7f) #else if (c < ' ') #endif *d = '?'; d++; } } if (stats) stats->byte_count = stats->unicode_count = (d - dst); return dst; }

红色部分为修改部分,修改后重新编译busybox. 文件系统执行挂载时加入参数 iocharset=utf8
这样在终端就能正常显示中文,如下图: linux busybox中文显示修改说明
文章图片

======================================
作者:hclydao
http://blog.csdn.net/hclydao
版权没有,但是转载请保留此段声明

===========================================

    推荐阅读