Xcode下的中文乱码问题

转载自:http://linyehui.me/2014/07/09/convert-gbk-to-utf8-on-mac.html

===========

问题原因

绝大部分的中文乱码是因为文件编码不对导致的:

  1. 使用了GBK的文件编码方式在Xcode下是无法识别的
  2. 老版本的Xcode对带BOOM头的UTF8文件编码也是无法识别的(我的Xcode 5.0.2已经支持带BOM头的UTF8文件了)

出现上述情况一般都是因为跨平台共用文件导致的,Windows,Mac共同使用的代码文件会出现乱码的问题。

最好的解决方案

Windows和Mac下统一使用UTF8带BOM头的文件编码格式。

特别解释下

以前是这样的:

UTF8不带BOM头的文件,在xcode和eclipse下显示正常,但Windows下会中文乱码;

UTF8带BOM头的文件,Windows下显示正常,但Xcode和eclipse下会中文乱码;

现在是这样的:

Xcode 5.0.2和ADT 22.3.0都已经支持显示带BOM头的UTF8格式。

Mac下遇到这种乱码怎么解决

方法一:使用Sublime的解决办法

Sublime Text 2下,使用Package Control 安装 ConvertToUTF8 这个插件:

  1. 使用Sublime打开乱码文件,正常是可以自动识别出来是GBK还是GB2312等编码的
  2. 如果识别不出来,那么就手动选择下菜单File-》Reload With Encoding,选择GBK,应该也能正确显示中文了
  3. 正确显示中文后,就可以把文件保存成UTF8格式了,但是直接Save是不行的,保存之前必须先做一件事情: > File -> Set File Encoding to -> UTF8
  4. 保存文件

方法二:Xcode的File inspector属性窗口

  1. 在工程中打开乱码的文件,选择File inspector属性窗口
  2. 选择Text Encoding,比如我选择“GB 2313”(不对的话可以换着试试看)
  3. 弹出提示,选择“Reinterpret”,如果中文显示正确,就下一步,否则就再换个编码试试

    Do you want to convert the text to ‘Simplified Chinese (GB 2312)’?

    Choose ‘Convert’ if you want to change the contents of the file to be encoded as ‘Simplified Chinese (GB 2312)’.

    Choose ‘Reinterpret’ if you believe the file has been opened with an incorrect encoding and you want to reopen it as ‘Simplified Chinese (GB 2312)’.

  4. 把成功显示中文后的文件保存成UTF8格式:

再选择下Text Encoing->UTF8,这次出现的提示选择Convert

    1. 搞定

Xcode下的中文乱码问题的更多相关文章

  1. Ubuntu下Eclipse中文乱码问题解决(转)

    Ubuntu下Eclipse中文乱码问题解决 把Windows下的工程导入到了Linux下Eclipse中,由于以前的工程代码,都是GBK编码的(Windows下的Eclipse 默认会去读取系统的编 ...

  2. ubuntu系统下matplotlib中文乱码问题

    参考 [ubuntu系统下matplotlib中文乱码问题 - CSDN博客](https://blog.csdn.net/jeff_liu_sky_/article/details/54023745 ...

  3. 解决windows下vim中文乱码

    解决windows下vim中文乱码 windows安装了vim8,也就是gvim后,打开带有中文的文档,显示中文是乱码. 毕竟有许多文档我是用utf-8编码的,所以解决的办法是设置一下编码为utf-8 ...

  4. windows下gvim中文乱码解决方案

    网罗了一些网上的解决windows下gvim中文乱码的解决方案,都试了一遍,可惜都不能完全解决我的所有问题,最后我综合一下网上的两种方案,得到了最后完全解决我的中文乱码问题的方案,配置很简单,就是把下 ...

  5. 180606-Linux下jdk中文乱码问题解决

    文章链接:https://liuyueyi.github.io/hexblog/2018/06/06/180606-Linux下jdk中文乱码问题解决/ linux下jdk中文乱码问题解决 之前遇到过 ...

  6. windows下mysql中文乱码, 配置解决方法

    内容源自:windows下mysql中文乱码, 配置解决方法 解决方法:打开mysql安装目录,打开my.ini文件(如果只有my-default.ini文件,先将其改名为my.ini!!!) 修改内 ...

  7. XAMPP下MYSQL中文乱码问题的解决

    XAMPP下MYSQL中文乱码问题的解决 现象描述: 安装完成XAMMP后,内置有MySQL数据库. 新建好自己的数据库后通过hibernate往表里面添加一些中文信息时全部乱码变成“??”. 问题解 ...

  8. JAVAWEB开发下常见中文乱码问题解决

    JAVA环境下处理中文乱码问题一直是很多人困扰的问题,像URL传参乱码,写进数据库乱码,服务写中文文字图片乱码处理及导出PDF乱码. 1:安装中文支持 yum groupinstall "f ...

  9. myql数据库在cmd下,中文乱码的问题原因

    使用navicat把数据导入数据库,这些数据都是中文,导入成功,显式也正常,但是在mysql cmd下都是乱码.检查了我的mysql配置,字符编码都是utf8,包括navicat连接时候也设置过是ut ...

随机推荐

  1. 【Django】【三】模型

    [基本数据访问] 1. models.py写模型 2. 数据库迁移 guest> python manage.py makemigrations sign guest> python ma ...

  2. hdu 3094 A tree game 树上sg

    A tree game Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Prob ...

  3. ORACLE SYNONYM详解

    以下内容整理自Oracle 官方文档 一 概念 A synonym is an alias for any table, view,materialized view, sequence, proce ...

  4. Teams UVA - 11609

    题意就不多说了这个小规律不算难,比较容易发现,就是让你求一个数n*2^(n-1):很好想只是代码实现起来还是有点小困(简)难(单)滴啦,一个快速幂就OK了: 代码: #include<stdio ...

  5. Android requestCode的限制

    一. why ? 由于才疏学浅,在开发中requestCode的让我很困惑.困惑是因为什么呢,是因为弄混了.要想弄明白,不困惑,来想一想用到requestCode的地方: ① startActivit ...

  6. List、Map、Set的区别与联系

    重复和有序 List 存储的元素是有顺序的,并且值允许重复: Map 元素按键值对存储,无放入顺序 ,它的键是不允许重复的,但是值是允许重复的: Set 存储的元素是无顺序的,并且不允许重复,元素虽然 ...

  7. centos7在upgrade的时候显示:Delta RPMs disabled because /usr/bin/applydeltarpm not installed

    前面安装信息,太多,省略 总计:113 MIs this ok [y/d/N]: yDownloading packages:Delta RPMs disabled because /usr/bin/ ...

  8. Codeforces 994 C - Two Squares

    C - Two Squares 思路: 点积叉积应用 代码: #include<bits/stdc++.h> using namespace std; #define fi first # ...

  9. 连续子数组和 Continuous Subarray Sum

    2018-10-03 01:12:42 问题描述: 问题求解: 本题本质上其实是一个preSum问题的变种,每次求preSum % k,并将之保存到map中,如果之后再次得到相同的余数,则表示这两者之 ...

  10. requests库使用:通过cookie跳过验证码登录,并用Session跨请求保持cookie

    拿我平时测试的一个系统为例,从UI层面来说必须先登录才可以进行后续操作,但是我在测试接口文档提供的接口时,发现并不需要登录,每个接口只要传参就可以正常返回.原因是我们这边专门弄了一个接口包来统一管理常 ...