subversion也需要设置“set LANG=en_US”
授权方式:署名,非商业用途,保持一致,转载时请务必以超链接(http://www.fwolf.com/blog/post/126)的形式标明文章原始出处和作者信息及本声明。在服务器上下载了一个svn(zip格式,解压就可以的),原本是想利用svn作为中转/记录,实现网站远程上传和更新,但是解压之后,运行命令行命令svn.exe,却遇到了像下面这样的乱码:
?\232?\175?\183?\228?\189?\191?\231?\148?\168?\226?\128?\156svn help?\226?\128?\
157?\228?\187?\165?\229?\190?\151?\229?\136?\176?\231?\148?\168?\230?\179?\149?\
229?\146?\140?\229?\184?\174?\229?\138?\169?\227?\128?\130
这实在是让我纳闷了半天,按理说svn解压缩就行,连install脚本、程序都没有,怎么一运行就乱码呢?并且敲几个其他的svn命令观察,发现乱码还不一样,应该是svn正常的执行了,而输出内容不正常而已。
同样也是偶然的,发现了解决方法。记得在Sybase Open Client 和 GTK+有点小冲突,当时问题出在了环境变量LANG上,这个svn原来也使用了这个环境变量,当环境变量LANG设置为en_US以后,svn的输出信息就正常了。
C:\>svn
Type ’svn help’ for usage.
现在把这个LANG设置到windows系统变量中,问题就解决了。
Update @ 2008-04-16
近日在用php实现svn的hooks脚本时发现,虽然使用的系统ubuntu的语言是en_US.UTF-8,但在php中仍然要将LANG设置为en_US才行(LANG设置为en_US.UTF-8就画蛇添足了),不过直接在php中更改环境变量是不行的:
putenv('LANG="en_US"');
这样只会影响php的环境,而php调用shell_exec()的时候,传递给命令的还是sh的默认环境,所以要在每次调用的时候强制指定环境变量。除了LANG以外,还要将LC_ALL赋值为en_US.UTF-8,这样才完全没有乱码,完整的结果如下:
$svn_log = shell_exec("env LANG=en_US LC_ALL=en_US.UTF-8 svnlook log $repos -r $rev");
Bookmark and Share This Page
If you like this then please subscribe to the RSS Feed.
Save to Browser Favorites
Ask
backflip
blinklist
BlogBookmark
Bloglines
BlogMarks
Blogsvine
BuddyMarks
BUMPzee!
CiteULike
co.mments
Connotea
del.icio.us
DotNetKicks
Digg
diigo
dropjack.com
dzone
Facebook
Fark
Faves
Feed Me Links
Friendsite
folkd.com
Furl
Google
Hugg
Jeqq
Kaboodle
kirtsy
linkaGoGo
LinksMarker
Ma.gnolia
Mister Wong
Mixx
MySpace
MyWeb
Netvouz
Newsvine
PlugIM
popcurrent
Propeller
Reddit
Rojo
Segnalo
Shoutwire
Simpy
Slashdot
Sphere
Sphinn
Spurl.net
Squidoo
StumbleUpon
Technorati
ThisNext
Webride
Windows Live
Yahoo!
Email This to a Friend
March 31st, 2006 at 10:32:43
谢谢,受教了。以前一直直接用TSVN,没有问题。这次准备在sourceinsight配置svn,只能采用svn的官方命令行工具了,结果乱码。
[Reply]
January 23rd, 2007 at 18:57:21
把/share/locale/zh_CN/LC_MESSAGES/subversion.mo文件删掉也可以的
[Reply]