svn diff中文乱码解决及命令行编码修改

问题现象

使用svn diff命令输出内容中的中文变乱码。
如下“版本”和“工作副本”可正常显示,内容乱了“ //2 椹秴”。

Index: E:/Projects/***/src/main.as
===================================================================
--- E:/Projects/***/src/main.as (版本 428)
+++ E:/Projects/***/src/main.as (工作副本)
@@ -196,13 +198,13 @@
//2 椹秴
(……后面的省略……)

原因分析

中文系统上svn默认是中文编码ANSI,而代码是UTF-8编码。diff文件中由svn生成的部分用ANSI编码,代码部分被从UTF-8强转为ANSI,乱码由此产生。

解决思路

两种解决方案:
方法1:把比对的内容(我们的代码)改为GBK等中文编码;
方法2:把svn的编码改为UTF-8;
第一种不太合理,我们要的就是代码UTF-8编码,故用方法2。
修改命令行的代码页编码,使输出内容以UTF-8编码。

实现方案

运行cmd打开命令行窗口;
输入chcp 65001将编码改为UTF-8(若要改回来用chcp 936及可);
svn diff输出不会乱码了;

扩展知识

MS-DOS提供的字符集:

代码页 描述
1258 越南语
1257 波罗的语
1256 阿拉伯语
1255 希伯来语
1254 土耳其语
1253 希腊语
1252 拉丁 1 字符 (ANSI)
1251 西里尔语
1250 中欧语言
950 繁体中文
949 朝鲜语
936 简体中文
932 日语
874 泰国语
850 多语种 (MS-DOS Latin1)
437 MS-DOS 美国英语

标签:svn, 乱码

已有 2 条评论

  1. test test

    如何让svn diff命令输出英文而不是中文,比如工作空间输出为 workCopy

  2. 一个人 一个人

    如果使用diff --summarize中 出现 的中文乱码。。是如何解决呢

添加新评论