软件编程含有中文的编码问题

SI与codeblocks编码设置

1、以UTF-8格式打开源码文件,并将UTF-8格式作为默认的编码模式。

情况一:源文件的格式为UTF-8(str="中文")
codeblocks的打开格式、保存格式、代码解析格式、内码编码格式、与设置一致,解析输出不能看到准确的汉子,这取决操作系统,因为国内windows操作系统cmd的输出是gbk,所以会有乱码,但是可以将编码的hex打印出来,就可以看到其内码格式为UTF-8。
代码解析:即编辑器对c/c++这些语言的解析。
情况二:源文件不是UTF-8
code blocks尝试以UTF-8去打开时,发现解析不了,那么就会以另一种格式去解析,
(中文解析格式替换出现在任何地方,不仅仅是注释,str=中文的话,也会出错)


此时codeblocks的打开格式、保存格式、代码解析格式、内码编码格式等不可预料,所以不能允许出现此类情况。

解决方式:
1、Edit-File_reload,重新reload定义该文件的编码格式,将原先解析错误的字符删除,重新输入,并保存。
举例:如果源文件编码格式为ASNI且包含有中文,codeblock()设置为UTF-8,没有设置GBK)打开后会以另一种不可预料的格式解析,此时中文就会乱码。即使通过file_reload,重新将文件编码格式定位为ASNI也解决不了乱码情况,(已经不可逆)。
2、使用notpad++,将文件格式转为UTF-8,将原先解析错误的字符删除,重新输入,并保存。

gbk与utf-8设置同样的道理。

问题:
若code blocks不指定解析内码的编码格式,那么会有一个严重的问题,当一个工程中的两个源文件,一个是utf8,一个gbk,那么在中文在内码的保存上1个是3个字节,1个是两个字节;
utf8保存的是utf8的内码,gbk保存的是gb2312的编码。

codeblock若不指定gcc的编译参数,其内码的解析格式与源文件的格式保持一致。vs编译器内码的解析格式与源文件的格式无关,与操作系统一致,始终为gbk。

si

默认编码模式,指的是对某一文件进行,编辑时文字以哪种方式进行保存,一旦编辑了文件,改文件就会以该编码模式进行保存。

若只是查看,reload只是临时更改了,编码方式。若编辑则会按照设置的编码模式更改源文件的编码方式。

vs
//新建
默认创建新建的文件编码方式为gb2312,这可以从高级系统设置中查看,默认都是第一个就是gb2312.

此时若在vs创建了文件,也可以通过更改高级设置,更改编码方式,我们一般只用到utf8与gb2312

//添加现有文件
若现有文件为gbk,没有问题

若文件为utf8编码,可能会出现乱码,错误现象,将下属打钩即可,导入进来的新的utf8文件,可从高级文件设置中看到变为了unicode,并不是之前默认的gb2312了。

若此时中文乱码问题解决了,但是编译时候出现下述问题,请参考以下解决方案:
https://blog.csdn.net/qq_36226393/article/details/77725493

https://blog.csdn.net/lcb_coconut/article/details/76136725

https://blog.csdn.net/yanchenyu365/article/details/84065719
//注意的是:不论vs工程中文件本身的编码格式是什么,内码都是以操作系统的gbk编码进行存储。

强烈建议在windows下编码时所有文件的编码方式都改gbk,

若是编写linux下应用程序,文件编码方式全部都为utf8

原文地址:https://www.cnblogs.com/retry/p/11177602.html

时间: 2024-10-05 12:26:31

软件编程含有中文的编码问题的相关文章

图片地址含有中文的编码

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #ffffff; min-height: 16.0px } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #00b1ff } p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #4bd156 }

使用扫描软件扫描含有中文字符的二维码显示乱码?

在使用中琅领跑条码标签打印软件制作并打印二维码时,有些朋友也会遇到这种问题:使用扫描软件扫描含有中文字符的二维码时,扫描界面显示为一串问号(即乱码).是什么原因造成扫描中文乱码的呢?又该如何解决呢?今天就来简单介绍一下. 首先,通过中琅领跑条码标签打印软件左侧工具栏的"绘制二维条码"按钮,在画布空白区域绘制出一个二维码. 在二维码上点击鼠标右键选择"属性",在弹出的属性窗口中,选择"数据源"选项,在左侧"数据对象"栏中,先点击

Python ftp client 处理含有中文的文件名

# -*- coding:utf-8 -*- ''' ftplib库的读写操作 文件名中含有中文的特殊处理: 收到的为utf-8格式的字符串,在保存时需要使用unicode编码的文件名写入本地文件系统. 测试环境: Server: File Zilla Server 0.9.50  Client OS: Win7 ''' import ftplib from ftplib import FTP ftp = ftplib.FTP( ) ftp.connect(host='localhost',po

PHP中判断字符串是否含有中文

<?php /** * [1.测试一] * 当$str = '中文测试'; 时输出"全部是汉字";当$str = '中a文3测试'; 时输出"不全是汉字"; * 应用说明:当某个地方要求用户输入的内容必须全部是中文时,这个就派上用场了. */ $str = '中文测试'; if (preg_match_all("/^([\x81-\xfe][\x40-\xfe])+$/", $str, $match)) { echo '全部是汉字'; }

免费计算机编程类中文书籍

摘自github 语言无关类 操作系统 开源世界旅行手册 鸟哥的Linux私房菜 (简体) Linux 系统高级编程 The Linux Command Line (中英文版) Linux 设备驱动 (第三版) 深入分析Linux内核源码 UNIX TOOLBOX WEB服务器 Nginx开发从入门到精通 (淘宝团队出品) 版本控制 git - 简易指南 Git 参考手册 Pro Git Git Magic GotGitHub Git Community Book 中文版 Mercurial 使

判断一个字符串中是否含有中文字符:

python中的encode和decode: 首先,在Python中字符串的表示是 用unicode编码.所以在做编码转换时,通常要以unicode作为中间编码. decode的作用是将其他编码的字符串转换成unicode编码,比如 a.decode('utf-8'),表示将utf-8编码的字符串转换成unicode编码 encode的作用是将unicode编码的字符串转换成其他编码格式的字符串,比如b.encode('utf-8'),表示将unicode编码格式转换成utf-8编码格式的字符串

CodeIgniter 如何解决URL含有中文字符串

codeIgniter默认的配置下是不允许URL中包含非ASCII字符的,如果URL中含非ASCII字符,那么CI会毫不客气的抛出错误.本文章向码农介绍CodeIgniter 如何解决URL含有中文字符串. 你 可能会说,那我把这个URL使用函数urlencode一下呢?不行.因为Web Server会在接收到一个被urlencode的URL后自动将其decode,然后在PHP里得到的这些字符串转换成他原来所代表的含义,并使用 Web Server自己的URL编码字符集(IIS6 中文版是GBK

解决Java工程路径中含有中文的情况

问题: 当Java工程路径中含有中文时,得不到正确的路径 *** 解决: 这其实是编码转换的问题.当我们使用ClassLoader的getResource方法获取路径时,获取到的路径被URLEncoder.encode(path,"utf-8")编码了,当路径中存在中文和空格时,他会对这些字符进行转换,这样,得到的往往不是我们想要的真实路径,所以我们可以调用URLDecoder.decode()方法进行解码,以便得到原始的中文及空格路径. Java代码 : String package

关于Django中JsonResponse返回中文字典编码错误的解决方案

解决方案:JsonResponse(data, json_dumps_params={'ensure_ascii':False}) ! data是需要渲染的字典 def master(request): data = {'这是':'主页'} return JsonResponse(data, json_dumps_params={'ensure_ascii':False}) 显示效果: 首先我们看JsonResponse()的源码: class JsonResponse(HttpResponse