当前位置:首页 » 编程软件 » 乱码重新编译

乱码重新编译

发布时间: 2023-11-10 13:14:23

❶ 如何解决嵌入式软件开发过程中的乱码问题

解决过程:

  1. 刚开始是简单的编码不匹配情况,修改secureCRT中的传输编码方式从默认变为utf8,中文不再乱码,但变成了问号,“??????”;

  2. 因为中文目录是在挂载的SD卡中的(居然没有尝试一下网络挂载或者其他的方式下中文是否乱码,)。,编译内核的时候fat文件系统的codepage和isochaset配置对,挂载时选择vfat,-o命令选择codepage和isocharset匹配就好了,具体的命令是,mount -t vfat -o codepage=936,iocharset=utf8 /dev/mmcblk0p1 /home/。然后接下来几天晚上就一直在鼓捣这些东西,无解;

  3. 高版本的busybox取消了中文支持,进入busybox配置,发现已经勾选了Unicode的支持。还需要修改busybox中的另外两个文件printable_string.c以及unicode.c,把大于0x7f替换为问号的这个选择条件去掉才行。看了一下源码,觉得改的地方都是不勾Unicode才需要改,重新配置编译busybox,替换根文件系统,如果问题还在进行下一步。

  4. 既然上面的提示中已经发现不勾选Unicode支持中文的方式,那就先试一下不支持Unicode显示中文的方式吧,修改printable_string.c以及unicode.c,重新编译,烧写启动设备,发现去掉Unicode果然中文支持了,不再显示问号;到这一步还出现问题再进行下一步。

  5. LAST_SUPPORTED_WCHAR,通过busybox源码,可以发现有这么一个判断if (wc > CONFIG_LAST_SUPPORTED_WCHAR){go subset;},而在subset的地方,wc被赋值为问号,明显是这个LAST_SUPPORTED_WCHAR的原因;

  6. 查看busybox配置,发现定义表示的是Range of supported Unicode characters,默认填的值才700多,而中文在Unicode中的位置查了一下最高到U+2FA1D,随便给这个值改了一个大于2FA1D的值,重新编译烧写根文件系统,中文显示成功!

c语言编译运行乱码是什么原因

这种情况多数是由于操作系统的语言选项不正确引起的。建议你查看一下控制面板中的区域和语言选项,特别是有关“非Unicode程序的语言”,一定要选择成“中文(简体,中国)”。然后重启电脑。

❸ 在CMD里编译java文件是出乱码

出现乱码可能是因为:

JDK没有安装好或是用了不完整的(损坏的)安装包。

环境变量未设置或设置错误。

JDK没有安装好或是用了不完整的(损坏的)安装包的解决方法:

  1. 用可信软件(大数字,企鹅等)或控制面板里删除之前下载的所有java,

  2. 到java官网下载最新版JDK

  3. 安装(需记住目录)

  4. 重新配置环境变量

环境变量未设置或设置错误的解决方法:

  1. 右键我的电脑,属性,高级设置,环境变量

  2. 新建,变量名:JAVA_HOME

    变量值:C:Program FilesJavajdk1.7.0(你安装java的目录)

  3. 新建变量名:CLASSPATH

    变量值:.;%JAVA_HOME%libdt.jar;%JAVA_HOME%lib ools.jar;(输入法切换到英文,开头的【.;】和末尾的【;】不要漏掉)

  4. 在系统变量列表里找到Path变量,双击

    变量名:Path(不变)

    变量值:%JAVA_HOME%in;%JAVA_HOME%jrein;

  5. 点击确定完成环境变量的配置,打开cmd输入java和javac测试

  6. 弹出下图所示的东西就表明环境变量编辑成功

    java:

❹ Linux中unzip解压时中文乱码如何解决

更改源码解决乱码
调试发现问题出现在MultiByteToWideChar方法里,
如 MultiByteToWideChar(CP_ACP,0,fn,-1,tfn,MAX_PATH); 到这里时fn中的name属性值还是正常的,在这个方法内部执行完tfn就乱了。
解决方法:
打开unzip.cpp源文件,找到函数
ZRESULT TUnzip::Get(int index,ZIPENTRY *ze)
{ // ......
// ......} 12345

这个函数里有
#ifdef UNICODE
MultiByteToWideChar(CP_UTF8,0,fn,-1,tfn,MAX_PATH);#else
strcpy(tfn,fn);#endif12345

把 CP_UTF8 改为CP_ACP, ( CP_ACP 指示要使用当前设置的 API 默认 Windows ANSI 代码页)
重新编译后
这样就解决了解压中文文件名称乱码的问题
编译时解决源码问题(无需更改源码)
上面的情况,我们我观察到unzip源代码这段开始的地方有判断
#ifndef Ext_ASCII_TO_Native 1

这样问题似乎更简单了,不用改源代码,只需在make时定义 Ext_ASCII_TO_Native 即可,这样 Ext_ASCII_TO_Native 实际为一个空的宏,不进行任何转换操作。
比如,使用下面的方法编译
make -DExt_ASCII_TO_Native 1

或者在bash执行下面两行
export LOCAL_UNZIP=-DExt_ASCII_TO_Native
make12

unzip解压缩含中文文件名zip包是出现乱码的问题解决!
如果您的系统已经安装了unzip
方法一 unzip行命令解压,指定字符集
通过unzip行命令解压,指定字符集
unzip -O CP936 xxx.zip (用GBK, GB18030也可以)1

方法二 在环境变量中,指定unzip参数
在环境变量中,指定unzip参数,总是以指定的字符集显示和解压文件
/etc/environment中加入2行
UNZIP=”-O CP936″
ZIPINFO=”-O CP936″12

方法三 利用pyton来处理
复制以下内容(python)保存未myuzip.py文件脚本,并修改运行权限为可运行(chmod +x uzip)
#!/usr/bin/env python# -*- coding: utf-8 -*-# uzip.pyimport osimport sysimport zipfileprint "Processing File " + sys.argv[1]

file=zipfile.ZipFile(sys.argv[1],"r");for name in file.namelist():
utf8name=name.decode('gbk') print "Extracting " + utf8name
pathname = os.path.dirname(utf8name) if not os.path.exists(pathname) and pathname!= "":
os.makedirs(pathname)
data = file.read(name) if not os.path.exists(utf8name):
fo = open(utf8name, "w")
fo.write(data)
fo.close
file.close()

这样以后我们解压缩时只需要运行此文件即可
./myuzip.py xxxx.zip

热点内容
java压缩上传图片 发布:2024-11-17 22:26:59 浏览:624
plc编程课件 发布:2024-11-17 22:18:23 浏览:466
我的世界服务器信号一直在检测 发布:2024-11-17 22:09:52 浏览:544
二级c语言教材 发布:2024-11-17 22:03:08 浏览:950
如何修改微软密码修改 发布:2024-11-17 21:48:23 浏览:346
大话西游端游什么配置可以玩 发布:2024-11-17 21:46:33 浏览:19
旅行箱密码忘了怎么办视频 发布:2024-11-17 21:46:27 浏览:690
如何改微信支付密码 发布:2024-11-17 21:41:33 浏览:703
云狗通过什么连接服务器 发布:2024-11-17 21:11:34 浏览:15
qq邮箱访问权限的限制 发布:2024-11-17 21:07:16 浏览:423