V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
that5
V2EX  ›  服务器

debian6 putty乱码

  •  
  •   that5 · 2011-06-03 17:31:41 +08:00 · 5792 次点击
    这是一个创建于 4924 天前的主题,其中的信息可能已经有所发展或是发生改变。
    机器是ramhost的vps,系统是debian6。
    我使用ssh 始终出现乱码,不能显示汉字,也不能编辑有汉字的文件,都是乱码。
    google了很多相关文章都一样,没能解决问题。

    http://bbs.vpser.net/thread-3180-1-1.html
    27 条回复    1970-01-01 08:00:00 +08:00
    reus
        1
    reus  
       2011-06-03 17:59:10 +08:00
    apt-get remove locales-all
    apt-get install locales
    dpkg-reconfigure locales
    2014
        2
    2014  
       2011-06-03 18:04:13 +08:00 via Android
    下载firezilla用sftp登录,直接用本地编辑器修改文件。
    that5
        3
    that5  
    OP
       2011-06-03 19:51:50 +08:00
    @reus 正在测试你的办法
    @2014 编辑具体哪个文件?
    that5
        4
    that5  
    OP
       2011-06-03 20:02:43 +08:00
    @reus 还是不行,有中文还是乱码 不能显示
    eth2net
        5
    eth2net  
       2011-06-03 20:09:41 +08:00
    window->translation->选择UTF-8 ?
    that5
        6
    that5  
    OP
       2011-06-03 20:27:35 +08:00
    @eth2net putty设置没有问题,字体也设置成宋体了 字符也是chinese gb2312
    2014
        7
    2014  
       2011-06-03 20:43:59 +08:00
    @that5 直接编辑你想要编辑的文件呀,就像ftp客户端一样使用。上传文件等,都可以用这个客户端,可以不用ssh终端命令行,你现在不熟悉命令行可以先用图形软件替代使用呀。
    haohaolee
        8
    haohaolee  
       2011-06-03 20:52:15 +08:00
    关键putty和远程的locale要一致,运行locale看看结果是啥
    that5
        9
    that5  
    OP
       2011-06-03 21:05:26 +08:00
    @haohaolee 结果如下
    LANG=
    LC_CTYPE="POSIX"
    LC_NUMERIC="POSIX"
    LC_TIME="POSIX"
    LC_COLLATE="POSIX"
    LC_MONETARY="POSIX"
    LC_MESSAGES="POSIX"
    LC_PAPER="POSIX"
    LC_NAME="POSIX"
    LC_ADDRESS="POSIX"
    LC_TELEPHONE="POSIX"
    LC_MEASUREMENT="POSIX"
    LC_IDENTIFICATION="POSIX"
    LC_ALL=
    that5
        10
    that5  
    OP
       2011-06-03 21:05:55 +08:00
    @2014 喜欢ssh 好方便
    reus
        11
    reus  
       2011-06-03 21:21:27 +08:00
    …………你locale是POSIX啊
    运行dpkg-reconfigure,把zh_CN开头的都选上,然后下一步选zh_CN.UTF-8
    生成之后重启一下,然后在putty里面选utf8
    如果用gb2312,那locale里面选zh_CN.GBK或者zh_CN.GB18030或者zh_CN.GB2312...
    reus
        12
    reus  
       2011-06-03 21:23:57 +08:00
    哦是zh_开头的都选上,locale那里
    其实还是utf8好啊,要是有不同语言混在一起的话,gb2312就不行啊
    2014
        13
    2014  
       2011-06-03 21:24:16 +08:00
    @that5 如果你打算在ssh终端里编辑中文,我想你还是别折腾了,目前没有ssh界面下也能用的中文输入法吧。查看中文内容倒是可以折腾一下。PS.我用ramhost一年多了。
    that5
        14
    that5  
    OP
       2011-06-03 21:42:50 +08:00 via Android
    @2014 既然你是ram用户,你可以尝试在输入vz之后就是输入自己密码帐号的时候是可以输入汉字的而且正常显示
    that5
        15
    that5  
    OP
       2011-06-03 21:48:30 +08:00 via Android
    @reus 你说的办法都试过了不行啊啊结果还是一样。难道是我修改了什么地方?很郁闷……
    2014
        16
    2014  
       2011-06-03 22:53:30 +08:00
    2014
        17
    2014  
       2011-06-03 23:28:57 +08:00
    我想我是解决了,你参考一下吧:

    entered into VE 199
    root@vps199:/# locale
    LANG=
    LC_CTYPE="POSIX"
    LC_NUMERIC="POSIX"
    LC_TIME="POSIX"
    LC_COLLATE="POSIX"
    LC_MONETARY="POSIX"
    LC_MESSAGES="POSIX"
    LC_PAPER="POSIX"
    LC_NAME="POSIX"
    LC_ADDRESS="POSIX"
    LC_TELEPHONE="POSIX"
    LC_MEASUREMENT="POSIX"
    LC_IDENTIFICATION="POSIX"
    LC_ALL=
    root@vps199:/# update-locale zh_CN.UTF-8 ///请忽略,我走歪路了
    *** update-locale: Error: invalid locale settings: LANG=zh_CN.UTF-8
    root@vps199:/# nano /etc/default/locale
    root@vps199:/# update-locale zh_CN.UTF-8
    root@vps199:/# date
    Fri Jun 3 22:58:29 CST 2011
    root@vps199:/# update-locale zh_CN.UTF-8
    root@vps199:/#
    root@vps199:/# dpkg-reconfigure locales
    Generating locales (this might take a while)...
    zh_CN.GB2312... done
    zh_CN.GB18030...memory exhausted
    done
    zh_CN.GBK... done
    zh_CN.UTF-8... done
    Generation complete.
    root@vps199:/# update-locale zh_CN.UTF-8
    root@vps199:/# locale
    LANG=
    LC_CTYPE="POSIX"
    LC_NUMERIC="POSIX"
    LC_TIME="POSIX"
    LC_COLLATE="POSIX"
    LC_MONETARY="POSIX"
    LC_MESSAGES="POSIX"
    LC_PAPER="POSIX"
    LC_NAME="POSIX"
    LC_ADDRESS="POSIX"
    LC_TELEPHONE="POSIX"
    LC_MEASUREMENT="POSIX"
    LC_IDENTIFICATION="POSIX"
    LC_ALL=
    root@vps199:/# locale -a
    C
    POSIX
    zh_CN
    zh_CN.gb2312
    zh_CN.gbk
    zh_CN.utf8
    root@vps199:/# update-locale zh_CN.utf8
    root@vps199:/# locale
    LANG=
    LC_CTYPE="POSIX"
    LC_NUMERIC="POSIX"
    LC_TIME="POSIX"
    LC_COLLATE="POSIX"
    LC_MONETARY="POSIX"
    LC_MESSAGES="POSIX"
    LC_PAPER="POSIX"
    LC_NAME="POSIX"
    LC_ADDRESS="POSIX"
    LC_TELEPHONE="POSIX"
    LC_MEASUREMENT="POSIX"
    LC_IDENTIFICATION="POSIX"
    LC_ALL=
    root@vps199:/# export LANG=zh_CN
    root@vps199:/# export LC_AL=zh_CN.utf-8 ///utf-8是小写的,我重试,不过还是歪路。。。LC_ALL我打成LC_AL,少个L,下面乱码就是这问题
    root@vps199:/# locale
    LANG=zh_CN
    LC_CTYPE="zh_CN"
    LC_NUMERIC="zh_CN"
    LC_TIME="zh_CN"
    LC_COLLATE="zh_CN"
    LC_MONETARY="zh_CN"
    LC_MESSAGES="zh_CN"
    LC_PAPER="zh_CN"
    LC_NAME="zh_CN"
    LC_ADDRESS="zh_CN"
    LC_TELEPHONE="zh_CN"
    LC_MEASUREMENT="zh_CN"
    LC_IDENTIFICATION="zh_CN"
    LC_ALL=
    root@vps199:/# date
    2011�� 06�� 03�� ������ 23:06:14 CST ///貌似有点正常了吧
    root@vps199:/# export LC_ALL=zh_CN.utf-8
    root@vps199:/# date
    2011年 06月 03日 星期五 23:08:11 CST
    root@vps199:/# nano test.txt
    root@vps199:/# cat test.txt
    zhongwen 中文显示 中文输入 没问题吧
    root@vps199:/#
    2014
        18
    2014  
       2011-06-03 23:32:14 +08:00
    简单说就是:
    apt-get install locales
    dpkg-reconfigure locales //选中并安装zh_CN相关的locales
    export LC_ALL=zh_CN.utf-8 //Done. 如果用export LC_ALL=zh_CN.gbk之类的,本地输入终端编码也需要一致。
    that5
        19
    that5  
    OP
       2011-06-03 23:36:11 +08:00
    @2014 这篇相当有用,非常感谢。
    http://www.wifizoo.net/blog/?post=82
    今天上午安装了中文字体但结果也没成功,不知道哪儿没对?
    为了这个中文不乱码真的是头疼无比...
    that5
        20
    that5  
    OP
       2011-06-03 23:40:02 +08:00
    @2014 我正在按照你的方法测试,希望ok 非常兴奋
    that5
        21
    that5  
    OP
       2011-06-03 23:53:14 +08:00
    @2014

    亲爱的中文你好 测试成功 <?php
    error_reporting(0); //抑制所有错误信息
    @header("content-Type: text/html; charset=utf-8"); //语言强制
    ob_start();

    define('HTTP_HOST', preg_replace('~^www\.~i', '', $_SERVER['HTTP_HOST']));

    $time_start = microtime_float();

    if ($_GET['act'] == "phpinfo"){
    phpinfo();
    exit();
    }
    that5
        22
    that5  
    OP
       2011-06-03 23:55:30 +08:00
    @2014 原来直接修改/etc/default/locale 这个文件好像是不行的 ,必须export LC_ALL=zh_CN.utf-8
    2014
        23
    2014  
       2011-06-04 00:42:32 +08:00
    @that5 嗯,我修改了文件,重启过,但是不行的。或许把locale的输出内容加到/etc/environment里面,重启试试。加export LC_ALL=zh_CN.utf-8到.bashrc文件里面也可以吧。
    haohaolee
        24
    haohaolee  
       2011-06-04 01:08:23 +08:00
    @that5 不同发行版不一样的 如果是这样 可以考虑export 到 .bash_profile 里面 如果你用bash的话
    haohaolee
        25
    haohaolee  
       2011-06-04 01:09:09 +08:00
    另外用putty是可以启动输入法的
    that5
        26
    that5  
    OP
       2011-06-04 08:57:18 +08:00
    @haohaolee 怎么启动呢
    haohaolee
        27
    haohaolee  
       2011-06-04 09:34:39 +08:00
    @that5 ...putty是windows GUI程序,直接就可以使用输入法
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1041 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 20:31 · PVG 04:31 · LAX 12:31 · JFK 15:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.