我是个idea的忠实用户,新公司的项目都是用eclipse做的,通过svn拉下代码后发现,注释的内容里,中文内容都是乱码。问过项目负责人,说可能是GBK编码。

但是,我通过idea的setting设置了编码,试了5种编码都没用,中文内容还是乱码。最后还是自己试出来解决方案。

详细的原因请参考最后的讲解。

乱码示例图

下面来介绍解决方法

第一步是点击右下角,如图所示的位置,然后选择GBK(由于我的项目之前是GBK编码,所以在这里我要是选择的GBK)。另外提醒一点,如果你的idea右下角没有这个按钮,请在你的编码界面中随意右键,然后选择“File Encoding”,效果一样。

第二步会出现如下提示,这里很重要,不要选错,先选择“Reload”,这里请严格按照我说的来,文章后面会告诉你如果选错会有什么后果

接着你就会看到乱码已经变成中文了,但是这对我还没结束,由于我将页面改成了GBK编码,但这并不是我想要的,我想要的是utf8的编码格式。

第三步,就是再次点击这个地方,然后选择UTF-8格式

最后一步就是选择Convert,这就结束了

相信有些朋友已经有点头绪了。这个“Reload”选择后不会改变文件和内容的编码格式,而是将IDE本身的解码格式由我原先的UTF-8换成了 GBK,由GBK的解码格式解GBK的文件就不会再看到乱码。而“Convert”是将GBK格式的文件内容转换成了UTF-8,同时将IDE的解码格式 也换成UTF-8。

所以之前说的,如果你第一次选择了“Convert”那么就会由原来的乱码弄成另一种乱码,反正我是没弄回来过。好在我是在git的branch上做的实验,我的源码文件还保留着,所以没有问题。

在以上的基础上,我猜测idea对java文件的编辑,应该是读取文件内容,并以IDE本身指定的encoding来进行解读

举例,如果IDE的encoding为GBK,而java文件是UTF8那么IDE读取文件的时候就会显示乱码,如果这个时候使用上文所说的“Convert”来讲乱码转换成UTF8文件。

重点来了,这个时候文件本身是UTF8格式编码,转成UTF8格式应该是不会有问题的。但结果是,你由GBKencoding换成用UTF8的encoding去解码这个文件发现还是乱码。

原因是由于IDE用GBK读取UTF8文件时显示的是乱码,文件并没有乱码,而是IDE读取出来的文件由于encoding解码不对才显示的乱码。那么你这个时候使用“Convert”不过是将IDE读取的内容转换成了UTF8,而并非是将文件内容转换成UTF8。就这么一个微小的区别,但结果却是完全不可控制的。

以上是打开项目后的单个文件修改,如果是整个项目需要改变编码格式,那么只需要把工程编码格式设置成与先前svn上的格式一致就行,settings-->editor-->file encoding 把工程的编码格式设置成对应格式即可,如果是其他项目再改回来就行,idea默认是采用utf-8进行编码,打开文件用的编码格式也是utf-8,所以如果老项目编码格式不是utf-8的就需要修改成对应的

idea软件编码已经设置好了为utf-8,但是svn中down下来的文件格式本身不是utf-8的,此时打开后会出现中文乱码解决方法的更多相关文章

  1. phpmyadmin设置编码和字符集gbk或utf8_导入中文乱码解决方法

    一.phpmyadmin设置新建数据库的默认编码为utf8编码的方法 1:新建数据库  my_db 2:使用sql语句  set character_set_server=utf8;  //设置默认新 ...

  2. restsharp 组件调用返回 gbk 编码的api,中文乱码解决方法。(restsharp response 中文乱码 gbk)

    最近要调一个restful风格的api 用了 一个开源第三方组件,组件还是蛮好用的, 支持直接按参数定义实体类,然后发起请求之前直接 addobject 的方式就把请求参数给添加进去了, 解码的时候可 ...

  3. mysql导入导出数据中文乱码解决方法小结(1、navicat导入问题已解决,创建连接后修改连接属性,选择高级->将使用Mysql字符集复选框去掉,下拉框选择GBK->导入sql文件OK;2、phpmyadmin显示乱码的问题也解决,两步:1.将sql文件以utf8的字符集编码另存,2.将文件中sql语句中的字段字符集编码改成utf8,导入OK)

    当向 MySQL 数据库插入一条带有中文的数据形如 insert into employee values(null,'张三','female','1995-10-08','2015-11-12',' ...

  4. java中文乱码解决之道(七)-----JSP页面编码过程

    我们知道JSP页面是需要转换为servlet的,在转换过程中肯定是要进行编码的.在JSP转换为servlet过程中下面一段代码起到至关重要的作用. <%@ page language=" ...

  5. java中文乱码解决之道(七)—–JSP页面编码过程

    我们知道JSP页面是需要转换为servlet的,在转换过程中肯定是要进行编码的.在JSP转换为servlet过程中下面一段代码起到至关重要的作用. <%@ page language=" ...

  6. java中文乱码解决之道(二)-----字符编码详解:基础知识 + ASCII + GB**

    在上篇博文(java中文乱码解决之道(一)-----认识字符集)中,LZ简单介绍了主流的字符编码,对各种编码都是点到为止,以下LZ将详细阐述字符集.字符编码等基础知识和ASCII.GB的详情. 一.基 ...

  7. ueditor的工具栏显示乱码解决方法 小问题.. 是你的页面编码与语言包js编码不符所导致的

    ueditor的工具栏显示乱码解决方法 小问题..  是你的页面编码与语言包js编码不符所导致的解决方法:用记事本将ueditor\..\lang\zh-cn\zh-cn.js打开,然后保存为ANSI ...

  8. java中文乱码解决之道(二)—–字符编码详解:基础知识 + ASCII + GB**

    原文出处:http://cmsblogs.com/?p=1412 在上篇博文(java中文乱码解决之道(一)—–认识字符集)中,LZ简单介绍了主流的字符编码,对各种编码都是点到为止,以下LZ将详细阐述 ...

  9. java中文乱码解决之道(三)-----编码详情:伟大的创想---Unicode编码

    随着计算机的发展.普及,世界各国为了适应本国的语言和字符都会自己设计一套自己的编码风格,正是由于这种乱,导致存在很多种编码方式,以至于同一个二进制数字可能会被解释成不同的符号.为了解决这种不兼容的问题 ...

随机推荐

  1. 数据库读写分离(aop方式完整实现)

    http://blog.csdn.net/machunlin2010/article/details/46471983

  2. 什么是Base64加密?为什么要有Base64加密?

    产生这篇文章的动力在于对接腾讯云服务的时候每次都要进行Base64编码之后才能进行签名,之前只知道Base64是个算法,但是不知道为啥都用这个算法,这次为了链接Base64究竟是个什么东东才在网络上各 ...

  3. [MongoDB]学习笔记--基本操作

    读取 db.collection.find() db.users.find( { age: {$gt: }}, {name: , address: } ).limit().sort({age:1}) ...

  4. struts2的配置文件为什么可以使用${}符号?

    转自:https://www.cnblogs.com/sharpest/p/6030265.html 一.#符号的用途一般有三种. “#”主要有三种用途: 1. 访问OGNL上下文和Action上下文 ...

  5. 《JAVA多线程编程核心技术》 笔记:第一章

    一.基本概念理解:1.1.进程和线程的理解1.2.同步和异步的理解(阻塞模式和非阻塞模式)1.3 线程间共享变量和不共享变量二.多线程的实现方式和构造方法:2.1 实现方式:2个2.2 构造方法:8个 ...

  6. 网站漏洞扫描工具(appscan,mdcsoft-ips)

    网站漏洞扫描工具:主要应用网站漏洞扫描工具,其原理是通过工具通过对网站的代码阅读,发现其可被利用的漏洞进行告示,通过前人收集的漏洞编成数据库,根据其扫描对比做出. 具体网站扫描工具有:appscan, ...

  7. SSH 框架整合总结

    1. 搭建Struts2 环境 创建 struts2 的配置文件: struts.xml; 在 web.xml 中配置 struts2 的核心过滤器; // struts.xml <?xml v ...

  8. Python高级教程-切片

    Python中的切片 取一个list或tuple的部分元素是非常常见的操作.比如,一个list如下: >>> L = ['A','B','C','D'] 对经常取指定索引范围的操作, ...

  9. 六顶思维帽的思考,敏捷开发?——By Me

    人类的思维可以分为很多种,其中按照思维的深度和广度的侧重,可以分为纵向思维和横向思维两种: 简单的来说,“六顶思维帽”可以简单的理解为下图所示: 如何使用这种思维方式呢?举个例子:先输入一个待讨论的事 ...

  10. xcode中全文查询某个中文字

    查询所有中文 [^"]*[\u4E00-\u9FA5]+[^"\n]*? 查询某个中文字“中”字 [^"]*[\u4e2d]+[^"\n]*? 中文字转成uni ...