免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 9838 | 回复: 18
打印 上一主题 下一主题

汉字编码问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-05-12 14:06 |只看该作者 |倒序浏览
不好意思问一个我从来没接触过的问题
当你用google查询的时候
会看到搜索栏里边%E4%BD%A0%E5%A5%BD
这样的符号现在我需要把这些符号转换成汉字
但是我不知道这时什么编码
他们说是url编码,可是我用url编码转换工具
转换出来也不是我要的效果呀
就拿这个来说%E4%BD%A0%E5%A5%BD
转换以后应该是你好
可是用url编码转换工具输出的确是浣犲ソ
这种东西,请问哪位帮忙看一下好么

论坛徽章:
0
2 [报告]
发表于 2006-05-12 14:12 |只看该作者
把“浣犲ソ”再按照 utf-8 解码一下,就得到“你好”了。
utf-8 格式的“你好”,如果你用 gb2312 来看的话,看起来就是“浣犲ソ”。

论坛徽章:
0
3 [报告]
发表于 2006-05-12 14:31 |只看该作者
噢~~~先谢谢这位姐姐
那么您的意思就是说这种编码必须要结2次了?
这种编码是什么编码呀?
能稍微教教我么

论坛徽章:
0
4 [报告]
发表于 2006-05-12 14:36 |只看该作者
原帖由 lishengxu 于 2006-5-12 14:31 发表
噢~~~先谢谢这位姐姐
那么您的意思就是说这种编码必须要结2次了?
这种编码是什么编码呀?
能稍微教教我么

那得看情况,
好比“你好”这个字符串是存放在 str 这个变量里的,
那么,从你的眼睛到这个变量之间,穿透的每种编码格式都需要考虑。

论坛徽章:
0
5 [报告]
发表于 2006-05-12 14:38 |只看该作者
那个好像是网页的设置的编码,google是utf-8,baidu是gb3212然后又url编码了一下。才成了那种%....%....的url编码形式。

论坛徽章:
0
6 [报告]
发表于 2006-05-12 14:40 |只看该作者
从你的眼睛到这个变量之间,穿透的每种编码格式都需要考虑

这句太深奥太抽象了
那您能介绍介绍经验,比如您都是怎么穿透的呢?
现在比较流行的编码都有什么啊?
我就知道url编码至于您说的utf-8 和 gb2312
我都从来没听说过啊

论坛徽章:
0
7 [报告]
发表于 2006-05-12 14:44 |只看该作者
那个好像是网页的设置的编码,google是utf-8,baidu是gb3212然后又url编码了一下。才成了那种%....%....的url编码形式。
那我就不明白了,使用各种编码的目的到底是什啊?
能够提高传输速度么?能够提高网络安全性么?
弄那么复杂有什么目的么?

论坛徽章:
0
8 [报告]
发表于 2006-05-12 14:51 |只看该作者
原帖由 lishengxu 于 2006-5-12 14:40 发表
从你的眼睛到这个变量之间,穿透的每种编码格式都需要考虑

这句太深奥太抽象了
那您能介绍介绍经验,比如您都是怎么穿透的呢?
现在比较流行的编码都有什么啊?
我就知道url编码至于您说的 ...

这么跟你说吧,其实你解 URL 编码的方法并没有错,
只不过你解出来的编码是 utf-8 的,
解出来的编码是 utf-8 的也没有错,
错就错在你打印在了一个显示 gb2312 编码的终端上了,
你告诉我,你是从哪儿看到“浣犲ソ”的呢?
换句话说,
你实际上已经解出“你好”来了,“浣犲ソ”就是 UTF-8 格式的“你好”,
但是,这个 UTF-8 格式的“你好”在哪儿呢?
在内存里呢,
内存里的东西你怎么知道对不对呢?
所以你就打印出来了,
但是你的终端,也就是 printf 语句的接收设备,
它把那个字符串按照 gb2312 理解了一遍,
于是你就看到了“浣犲ソ”,
如果你的终端是用 utf-8 理解 printf 的输出的,
那么你看到的就不是“浣犲ソ”,
而是“你好”,
这么说,你会不会认为这个责任不是解 URL 解的不对,而是终端的编码设置得不对呢?
呵呵。
你用的是什么操作系统?
如果是 Linux 的话,
那么,你很可能在用 putty(我是猜的,猜错了别怪我哦~),
putty 又会有它的编码设置,
也就是说,也许你的 Linux 终端的设置是对的,
但是 putty 的又不对了。
而你的眼睛,
要想看到这个变量,
就得穿透显示器、windows、putty、shell、你的程序、最后才能到变量。
这中间每一个环节的编码设置都会影响你的眼睛看到的结果。

评分

参与人数 1可用积分 +5 收起 理由
flw + 5 精品文章

查看全部评分

论坛徽章:
0
9 [报告]
发表于 2006-05-12 15:05 |只看该作者
老姐我越听越觉得你说的全对,可我就是听不懂郁闷啊
我用的是linux操作系统
putyy是什么啊?编译器么?

你的意思是不是说其实内存里放的就是
你好
这两个字,可是是横着放的,可是那个傻瓜输出设备它非要竖着给你显示出来
所以就不对了
所以呢你想看到正确的你好就的想个办法把你好在内存里给他翻一下
也就是解码一下
然后就对了
这比喻的好像不太好,但您看我说的是不是就是您的那个意思啊?

论坛徽章:
0
10 [报告]
发表于 2006-05-12 15:21 |只看该作者
原帖由 lishengxu 于 2006-5-12 15:05 发表
老姐我越听越觉得你说的全对,可我就是听不懂郁闷啊
我用的是linux操作系统
putyy是什么啊?编译器么?

你的意思是不是说其实内存里放的就是
你好
这两个字,可是是横着放的,可是那个傻瓜 ...

你的比喻非常正确。

你是直接在 linux 下操作的?
还是通过 windows 连接过去的?
你先不要改程序,先用这个办法设置一下环境变量试试(在 shell 下执行):
  1. export LANG=en_US.utf8
复制代码

然后,
如果你用的是 windows 连接到 linux 去的,那么你把你用的那个用来连接 linux 的软件设置一下,有个设置编码格式的地方,一定要设置成 utf-8。
如果你用的是 linux 的 xwindow,那么,也许你正在使用一个叫做 xterm 的终端,从它的菜单里找一下设置,把编码也改成 utf-8 格式。



如果以上办法都不行,
那么,试试下面这个办法:
  1. <你原来的输入的那个命令> | iconv -f utf-8 -t gb2312
复制代码

也就是说,在你原来的命令的最后,加上一个竖线,再加上 iconv -f utf-8 -t gb2312 这个命令。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP