linux busybox中文显示修改教程
程序员文章站
2023-12-23 16:44:22
1.内核修改
进入内核,执行make menuconfig后
依次进入
File systems --->
Native language support ---&g...
1.内核修改
进入内核,执行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下用renameTo方法修改java web项目中文件夹名称的实例
-
linux下用renameTo方法修改java web项目中文件夹名称的实例
-
Tecplot Focus 2017 R2 中文破解破解详细教程 for win64/mac/linux
-
linux修改tomcat端口号命令(linux入门基础教程)
-
Linux下mysql 8.0.15 安装配置图文教程以及修改密码
-
linux修改tomcat端口号命令(linux入门基础教程)
-
用date命令修改Linux系统的时间为什么无效?怎么才能正确显示
-
Linux系统下中文显示乱码怎么改回显示英文状态?
-
linux系统中文件I/O教程
-
linux iotop 安装使用教程(显示硬盘IO读写情况)