在linux终端shell通过svn命令svn log获取的信息里中文部分是乱码,看不出是啥编码格式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在linux终端shell通过svn命令svn log获取的信息里中文部分是乱码,看不出是啥编码格式相关的知识,希望对你有一定的参考价值。

原svn log信息带有中文,在linux 终端通过svn log 获取到信息中文都是乱码,尝试转换过utf8、utf16、gbk、gb2312等,均无效,谁能看出是什么编码格式?

*?\229?\155?\158?\230?\187?\154?\227?\128?\1447839 ?\229?\176?\134?\229?\141?\184?\232?\189?\189?\230?\150?\135?\228?\187?\182?\229?\136?\155?\229?\187?\186?\229?\136?\176?\231?\179?\187?\231?\187?\159temp?\231?\155?\174?\229?\189?\149?\228?\184?\139?\239?\188?\140?\229?\133?\188?\229?\174?\185jenkins?\231?\188?\150?\232?\175?\145?\227?\128?\145

这个看不出来是什么格式
svn log > txt
导出到文件 后 使用图形环境下的文本编辑器查看。这应该是终端设置问题。

你的终端能显示中文么?追问

我的终端能显示中文
但svn log 导出到文件,使用图形环境下的文本编辑器查看,中文部分一样是乱码

应该不是终端的问题

追答

你是在windows下提交的,然后在linux下查看么?

追问

嗯 是的

追答

那必须限制windows下提交的编码格式。上传的时候svn没对编码做判断。使用linux命令输出的时候,直接把文件的字节流(win下gb2312编码)输出到终端了。而终端按照utf8格式解释这串字节流,所以会出现乱码。设置环境变量不能解决问题。

追问

那要如何限制提交的编码格式呢?
要么用英文,要么中文先手动转换成utf8编码再提交?
如果我们坚持用中文的话,提交的时候有没有便捷的方法可以自动转换中文编码?

追答

哎你在windows下的所有提交的文本都用utf8编码。这个主要是你需要使用文本编辑器。 比如notepad 。 转换文本编码。

追问

提交代码的时候svn message 还是得手动转换 (message先写到文本编辑器中、转换文本编码、之后再复制粘贴到svn message中)。。。
好吧,看来也没什么好方法了
谢谢啊 还有楼下2位回答者

参考技术A echo $LANG 自己看一下是不是显示的 : en_US.UTF-8追问

显示的是 en_US

追答

所以乱码了,你需要改成 en_US.UTF-8
你得在~/.bash_profile里 添加了 export LANG =en_US.UTF-8

参考技术B 这个应该不是编码格式... 最好的办法就是 禁止在 提交的时候写中文追问

是显示问题?
我们提交时都是用中文的,不能不用

追答

那就在 提交的时候规定 文字编码吧,没什么好办法。

Linux下搭建SVN服务器

1、在进行svn服务器环境搭建之前首先用终端命令连接到服务器上。
在打开的终端页面,输入如下代码:
ssh user@hostname
注:上边代码为固定格式,其中
user 为 linux 服务器的管理员名称
hostname 为 linux 服务器的IP
如: ssh haibor@1.2.3.4
如此就可以在mac一样远程登录管理你的linux服务器了
2、新建一个目录用于存储SVN所有文件

#mkdir /svn

3、 新建一个资源仓库

# svnadmin create /svn/project   
# ls /svn/project/   
conf db format hooks locks README.txt  


目录用途说明:

l hooks目录:放置hook脚本文件的目录

l locks目录:用来放置subversion的db锁文件和db_logs锁文件的目录,用来追踪存取文件库的客户端

l format文件:是一个文本文件,里面只放了一个整数,表示当前文件库配置的版本号

l conf目录:是这个仓库的配置文件(仓库的用户访问账号、权限等)

  1. 配置svn服务的配置文件svnserver.conf文件
# vi /svn/project/conf/svnserve.conf   

进入该文件界面

输入i进行修改文件,将文件中的对应内容按照以下修改

anon-access = none   
auth-access = write   
password-db = passwd   
authz-db=authz   
realm = My Test Repository #这是个提示信息  

保存
按esc退出编辑界面
再输入” :wq “保存并退出

  1. 添加两个访问用户及口令
# vi /svn/project/conf/passwd   

输入i进行修改文件,将文件中的对应内容按照以下修改

[users]   
leader = 123456   
member1 = 123456   
member2 = 123456 

保存同第4步骤
注意:对用户配置文件的修改立即生效,不必重启svn服务。

  1. 配置新用户的授权文件
# vi /svn/project/conf/authz   

输入i进行修改文件,将文件中的对应内容按照以下修改

[groups]   
admin = leader,member1   
user = member2   
[/]   
@admin = rw   
@user = r   
* =  

保存同第4步骤
格式说明:

版本库目录格式:

[<版本库>:/项目/目录]

@<用户组名> = <权限>

<用户名> = <权限>

/ 表示对根目录(即/svn/project目录)下的所有子目录范围设置权限;

[/abc] 表示对资料库中abc项目设置权限;

创建一个admin组,组成员包括leader和member1

创建一个user组,成员只有member2;

admin组对目录有读写权限;

单个用户member2有读权限;

*=表示除了上面设置的权限用户组以外,其他所有用户都设置空权限,空权限表示禁止访问本目录,这很重要一定要加上。

注意:对权限配置文件的修改立即生效,不必重启svn。
6. 启动svn服务

svnserve -d -r /svn/project/

注意:不要使用系统提供的 /etc/init.d/svnserve start 来启动,因为系统默认的启动脚本中没有使用 –r /svn/project参数指定一个资源。这种情况下启动的svn服务,客户端连接会提示“svn: No repository found in ‘svn://192.168.11.229/project’ ”这样的错误。

默认svn服务器端口是3690。

Mac SVN 命令
首先你要在这个svn代码库里添加文件
不然你check out 会显示URL does not exit

svn import ./dms svn://localhost/project --username=leader --password=123456

check out 下载代码命令

svn checkout svn://localhost/project username=leader --password=123456

总结下走过的坑,
执行命令# svn co svn://192.168.11.229/project时提示“svn: Authorization failed”错误
看auth,password及conf文件有没有打错的地方
如果看不出,就可能是存在前置空格的问题或者其他的
这时我是重新创建svn/project的代码库文件夹,然后按以上步骤打一遍就ok了~

解决:一般这种授权失败的错误原因都来自conf/authz文件的配置
以上参考链接http://my.oschina.net/lionel45/blog/298305

以上是关于在linux终端shell通过svn命令svn log获取的信息里中文部分是乱码,看不出是啥编码格式的主要内容,如果未能解决你的问题,请参考以下文章

linux下怎么查看svn目录

linux上svn服务怎么提交修改后的文件

linux上svn服务怎么提交修改后的文件

svn 上传.a文件

Linux下搭建SVN服务器

在Linux中搭建SVN服务器