先说明下问题出现的环境
引用
ruby 1.8.5
rails 1.1.6
mysql 5
数据库使用gb2312编码
在config中特别设置了encoding: gb2312属性
开发工具用vim,文件编码用gb2312
每一个action都有设置“charset=gb2312”
ruby的string编码没有特别设置。
在开发的时候用到了中文文本的词语统计功能。其先选择了String.count,不过这个函数怎么调用的结果都不对。
只要count的对象是中文的词组,那么结果就是错误的。
于是就使用了scan,很好.每次都是正确的。编写了一小段的测试代码,保证每一错误之后,就写到了action中。
测试过程中,发现有个特殊的字 "出"字。只要被统计的词组中带有这个"出"字,就会提示错误。错误提示如下
引用
premature end of regular expression: /\263�
不过在单独的测试代码中,这个字并不会引起错误. 仔细检查了这个字的输入和输出过程,发现了些问题.
比如,往数据库中添加 “促出”这个词组时,log中 post的数据是
引用
"word"=>"\264俪\366"
sql语句中插入的数据是
引用
VALUES(NULL, NULL, '促?
当然在mysql中,用mysql-front察看的结果 还是"促出",一点都没差。但是一旦从数据库中读取出来,用到mytext.scan(a.word)时,就会提示上面的 scan错误.
从这些表象看起来,scan是把字符转换编码之后才开始查找字符串的。很不巧的是,‘出’的转换似乎有些异常。 但是这个对于测试代码中用到 scan('出')是解释不通的。
而且 从数据库中读取的a.word的内容,如果直接输出到log,或者检测其长度,都是正确的。唯独scan使用后就会有异常。
这里有些疑问,希望了解的同学解答下.
第一:post上来的中文为啥不用gb2312编码,看上去像utf-8 或者utf-16的编码,这个能否调整.
第二:sql语句插入时,为什么只能看到一半的字。而数据库中又是正常的.
第三:怎么绕过这个奇怪的编码问题?
分享到:
- 2007-01-23 15:13
- 浏览 4876
- 评论(4)
- 论坛回复 / 浏览 (4 / 4341)
- 查看更多
相关推荐
比如本文所述的中文网页GBK编码的诡异问题。 现象 例如:盲录職氓聭聵,其实网页里面正常的应该是会员 分析 接着上面的例子,会员这部分乱码通过repr()函数求值得到如下结果 \xc3\xa4\xc2\xbc\xc2\x9a\xc3\xa5\xc2\...
本文将详细介绍如何在 Python 中实现 Unicode 到中文的转换,以及如何更改默认编码以避免常见的编码问题。 #### Unicode 转中文 Unicode 是一种支持世界上几乎所有的书写系统的字符编码标准,它为每种语言中的每个...
2. **JQuery.ajax传递中文参数乱码的解决方法.txt** - 在发送Ajax请求时,如果数据包含中文字符,可能会出现乱码问题。这通常是因为字符编码不一致导致的。解决方法包括确保请求体和响应体的字符集统一,如设置...
*中文网页的乱码问题:解决方法是编码转换。 * 设置延迟时间:例如,设置每10秒翻开一个新的网页,以避免占用过多的带宽。 在实践中,爬虫的策略是多种多样的,例如深度优先、广度优先等。根据实际情况选择合适的...
1. **Char型变量能否存储中文汉字?** - **答案**:可以。Java使用Unicode编码,每个`char`变量占用16位,因此完全可以存放一个中文字符。 2. **多线程实现方法** - **实现方法**:主要有两种实现方式: - **...
### 《链接器和加载器》(中文版)—— 关键知识点详解 #### 第1章 链接和加载 **链接器和加载器的作用**: - **链接器**负责将多个目标文件(通常是由编译器产生的)链接成一个可执行文件或库。 - **加载器**则是在...
不正确的DOCTYPE可能导致浏览器进入怪异模式,这会导致渲染问题。 2. **字符编码(charset)**: `<meta charset="utf-8">`用于指定文档的字符编码,确保不同语言的文字正确显示。HTML5推荐使用这种方式,而不再...
中文 liblcl 一个通用的跨平台GUI库,核心使用Lazarus LCL。 已支持语言: go: c/c++: 完成度较高的语言: nim(Beta): rust(test): 测试中的语言 语言绑定工具生成器:,目前已经生成了c/c++、rust、nim的,详细...
`<html lang="">`属性用于声明文档的语言,比如`<html lang="zh-cmn-Hans">`表示简体中文,`<html lang="zh-cmn-Hant">`表示繁体中文。使用ISO 639-1语言代码和ISO 3166-1 alpha-2地区代码可以提供更精确的语种识别...
echo 一些诡异的变量 5-2. 转义符 6-1. exit/exit 状态 6-2. 否定一个条件使用! 7-1. 什么情况下为真? 7-2. 几个等效命令test,/usr/bin/test,[],和/usr/bin/[ 7-3. 算数测试使用(( )) 7-4. test 死的链接文件 7-5. ...
-实际上IE7下所以的回发都慢,原因是客户端的Base64编码速度慢,已经使用encodeURIComponent来代替Base64编码。 -俄语翻译(feedback:vbelyaev)。 +2010-06-30 v2.3.1 -ExtAspNet控件将不在依赖ViewState,...
-修正Alert消息中引号未编码导致的JS错误(feedback:sun1299shine)。 +集成extjs3.0.3。 -修正弹出对话框的宽度计算错误(会保持最小的状态)。 -增加新的皮肤Gray。 -为示例工程添加改变语言和皮肤的下拉列表。...
第二个标签则设置了页面的内容类型为text/html,并指定了字符编码为GB2312(简体中文字符编码)。 4. CSS样式表: 样式表通过标签定义在页面的头部中,它包含了两部分样式规则: input { behavior:url(#default#...