在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位回答者
显示的是 en_US
追答所以乱码了,你需要改成 en_US.UTF-8
你得在~/.bash_profile里 添加了 export LANG =en_US.UTF-8
是显示问题?
我们提交时都是用中文的,不能不用
那就在 提交的时候规定 文字编码吧,没什么好办法。
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目录:是这个仓库的配置文件(仓库的用户访问账号、权限等)
- 配置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 “保存并退出
- 添加两个访问用户及口令
# vi /svn/project/conf/passwd
输入i进行修改文件,将文件中的对应内容按照以下修改
[users]
leader = 123456
member1 = 123456
member2 = 123456
保存同第4步骤
注意:对用户配置文件的修改立即生效,不必重启svn服务。
- 配置新用户的授权文件
# 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获取的信息里中文部分是乱码,看不出是啥编码格式的主要内容,如果未能解决你的问题,请参考以下文章