关于windows下程序开发的中文乱码问题小结

笔者遇到的问题背景:

windows 下使用notepad++6.7 ,ftp连接远程ubuntu主机,在本地创建远程主机文件,编辑后上传出现中文乱码。

笔者最开始不明白问题出在哪,因为设置了在notepad++中默认使用UTF-8编码格式进行新建文件,但依旧无效。

笔者一步步探索问题:

  1. 新建一个文件,写入纯英文html文本后上传至ubuntu主机,vi :set fileencoding显示此时为utf-8编码
  2. 上述文件新增几个中文,保存后上传至ubuntu主机,这个时候提示fileencoding变成了latin1编码,相应的中文部分就变成了乱码
  3. 网上有很多人说设置一下meta标签,就是最常见的charset=utf-8这个属性,我也进行了尝试,宣告失败,没有解决乱码问题。

我觉得问题出现了,一个文件,没写中文前是utf-8编码,写入文件后是latin1编码,这就是问题的关键

一顿百度之后发现,在notepad++,选项卡中有一个“格式(M)”,其中有很多选项:其中主要有两个大块:以XXX格式编码,转为XXX格式编码,这就是解决问题的关键所在。

结合笔者以前遇到过一些关于中文乱码,让很多网友头疼不已的问题,需要明白的道理总结如下:

内容涉及windows操作系统,linux操作系统以及浏览器的解析三个部分。

第一、要明白该问题是windows上默认的字符编码与Linux上的字符编码不同导致的,一般前者是ANSI,后者是UTF-8;

在不同平台上文本显示的乱码问题是因为操作系统之间默认的字符编码不同造成的,上面的例子,纯英文文本,ANSI编码和UTF-8编码可以说是等价的,没有问题。

但是涉及到中文编码时,ANSI是不支持的,或者说与UTF-8的编码是不同的。一份ANSI编码的文本送给Linux,它用UTF-8格式来解开,结果是解除一对乱码。

另外,windows和linux同样使用UTF-8对文本进行编码时,略有区别,这就是有BOM和无BOM的区别(具体参看其他文章),Linux无BOM。

  总结:

  1. 为了使得两个系统平台的文件能够正常无缝显示,很大的一个关键点是:windows使用UTF-8编码(无BOM格式)来保存文件或者用UTF-8编码来保存(别用其他编码,使用其他编码保存中文,假设用ANSI保存,想转为别的码时,因为本身已经乱码,再转很可能也是乱码)
  2. 当在文件要上传至Linux主机上时,要做一次检查,将文件转成UTF-8(无BOM)再传上去,确保完全没问题。

第二、meta标签,就是最常见的charset=utf-8这个属性的问题

这个问题造成的乱码,其实来自于文本文件本身的编码和浏览器解析时使用的编码不同而导致的,这与第一点造成的乱码不是同一个概念。

  • 举例1:访问一个UTF-8格式的网页文本,该文本没有指定<meta charset=utf-8>,很可能遇到浏览器默认以GBK编码对网页进行解析。结果:以GBK解码一份以UTF-8编码的文本,乱码。
  • 举例2:访问一个一个UTF-8格式的网页文本,该文本指定<meta charset=utf-8>,很可能遇到浏览器默认以GBK编码对网页进行解析,此时遇到meta,懂得要以utf-8来解析它。结果:以UTF-8正确解析了一份以UTF-8编码的文本,没问题。
  • Ps:例子2也可能还是对中文解析出乱码。这是为什么?那是因为,服务端的那份UTF-8编码的文件,在有中文的地方,本身就已经是乱码!原因是什么?是的,这种情况下,就可以将两个中文乱码的原因联系起来了。在windows上编写完代码上传至服务端主机时,就已经因为两个系统的编码矛盾而致使中文乱码了,当浏览器发起访问时,不管解析使用的编码是否正确,错误的编码再怎么解析,都是错的,这就是问题的由来。

总结:不同的系统之间传输文件,注意编码要使用正确的,确保文件本身没有错;客户端访问时,用meta告知浏览器文件的编码,确保解析文件没有错,有这两步,一般不会都能解决中文乱码问题!

时间: 2024-08-10 21:21:31

关于windows下程序开发的中文乱码问题小结的相关文章

[0010] windows 下 eclipse 开发 hdfs程序样例 (二)

目的: 学习windows 开发hadoop程序的配置 相关: [0007] windows 下 eclipse 开发 hdfs程序样例 环境: 基于以下环境配置好后. [0008] Windows 7 下 hadoop 2.6.4 eclipse 本地开发调试配置 1. 新建HDFS下载文件类 在已有mapreduce项目中新建类添加如下代码,代码从[0007]中取出小修改 功能:从hdfs下载文件到windows本地 package hadoop.hdfs; import java.io.F

[0011] windows 下 eclipse 开发 hdfs程序样例 (三)

目的: 学习windows 开发hadoop程序的配置. [0007] windows 下 eclipse 开发 hdfs程序样例 太麻烦 [0010] windows 下 eclipse 开发 hdfs程序样例 (二) 输出日志变化,而且配置似乎很麻烦. 环境: windows 7 64下 eclipse 说明: 该实践是在[0008] Windows 7 下 hadoop 2.6.4 eclipse 本地开发调试配置 中设置后进行的, 在这里面进行了一些环境变量设置.插件安装. 如果按照以下

JFreechart在linux下不显示及中文乱码问题

一.使用JFreeChart建的报表,在window下能正常显示,但是放到linux下就报错,而且有时候会把tomcat挂掉, 原因是jfreechart的在linux系统中需要访问java awt库提供...... 一.使用JFreeChart建的报表,在window下能正常显示,但是放到linux下就报错,而且有时候会把tomcat挂掉,原因是jfreechart的在linux系统中需要访问java awt库提供的图形功能,而linux下的绝大多数版本的java awt类库都需要x serv

Linux下关于解决JavaSwing中文乱码的情况

1.下载simsun.ttc(宋体).http://download.csdn.net/detail/lazy_p/4436971 2.linux中跳转到JDK安装目录 ..../jre/lib/fonts 3.sudo mkdir fallback  然后将Windows所拷贝的字体放到fallback中 相关解决网址 http://www.linuxidc.com/Linux/2009-10/21991.htm http://www.cnblogs.com/zhangyongli2011/a

windows下spark开发环境配置

http://www.cnblogs.com/davidwang456/p/5032766.html windows下spark开发环境配置 --本篇随笔由同事葛同学提供. 特注:windows下开发spark不需要在本地安装hadoop,但是需要winutils.exe.hadoop.dll等文件,前提是你已经安装了eclipse.maven.jdk等软件 spark支持jdk版本建议是1.8及以上,如果开发spark建议将jdk编译版本设置为1.8 我选择的spark是spark-1.4.0

[傻瓜版] Redis在Windows下的开发环境配置步骤

redis默认运行在unix体系下,windows无法直接运行官方版.以下是几种解决方案, 一)Windows移植版.启动速度飞快,优先推荐使用. a) 2.6.12 是稳定版,我用来64位版做开发环境,数个月未发现重要问题.  下载地址: https://github.com/MSOpenTech/redis/tree/2.6/bin/release b) 2.8.4 是3月24发布的最新版,此版本运行时会临时占用内存大小的硬盘空间,下载地址: https://github.com/MSOpe

Windows下Android开发环境配置

最近在配置安卓. 还是拿舍友没带回家的手机.. 自己手机是WP.. 搞了半天搞好了. 叹了口气,要是有人这样教我就好了,少走好多弯路. 废话不说,步骤如下" 一.安装JDK 为啥要安装JDK就不说了吧?java写安卓.. 传送门: http://www.oracle.com/technetwork/java/javase/downloads/index.html 安装完后,配置环境变量: 右击 "我的电脑"->属性->高级->环境变量->系统变量-&g

【Objective-C】Windows下Objective-C开发环境配置

[Objective-C]Windows下Objective-C开发环境配置 ftp://ftpmain.gnustep.org/pub/gnustep/binaries/windows/ 最近打算针对iPhone.iPod touch和iPad开发一些应用,所以,需要开始学习Objective C(苹果推出的类似C语言的开发语言).由于苹果的自我封闭的产业链发展模式(从芯片.机器.开发语言.终端产品.服务)的限制,要想开发针对苹果 iPhone等产品的应用程序,就需要用Mac机器,在Xcode

初学Windows应用程序开发遇到的几个专业名词解释

1..NET Framework Visual Studio.NET程序开发环境是微软开发的基于.net 架构的Windows应用程序开发工具,它支持VB.NET.C/C++.C#.Java等编程语言,提供一个统一的面向对象的编程开发环境,而.NET Framework是这个开发环境的核心,它包含把.NET应用程序转换为可执行文件所需的所有编译器,并为所有的开发语言提供了一个包括公共语言规范.公共类型系统.JIT编译器.代码管理和垃圾收集器的公共运行环境,其中JIT编译器可以把.NET应用程序编