`
langzhe
  • 浏览: 286384 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

http://wiki.woodpecker.org.cn/moin/MiscItems/2010-11-06

阅读更多

 

昨天用xmerl_scan:string/1 解析xml,发现xmerl_scan:string/1返回的是unicode,如中国的“中”,经过xmerl_scan:string/1处理后,返回的是"[10023]".继续传递的时候到了ejabberd_odbc.erl中,就出错了。因为他没有做处理。

 

解决此问题有两种方法

1.修改 程序代码 对xmerl_scan:string/1返回值进行编码

2.修改ejabberd_odbc.erl对传入的参数进行编码

 

 

jason@client-3:~/work/trunk/src$ svn diff -r 49:298 odbc/ejabberd_odbc.erl 

Index: odbc/ejabberd_odbc.erl

===================================================================

--- odbc/ejabberd_odbc.erl (版本 1)

+++ odbc/ejabberd_odbc.erl (版本 2)

@@ -150,7 +150,11 @@

 

 %% Escape character that will confuse an SQL engine

 escape(S) when is_list(S) ->

-    [odbc_queries:escape(C) || C <- S].

+    %% to handle unicode codepoint to utf-8 string

+    UTF8Binary = unicode:characters_to_binary(S, utf8, utf8),

+    UTF8Str = binary_to_list(UTF8Binary),

+    [odbc_queries:escape(C) || C <- UTF8Str].


好心人更详细的解释
0
0
分享到:
评论
1 楼 langzhe 2010-11-08  
lxw 很不能理解 如果 下面参数 S 已经是UTF8 了在执行下面操作后 又进行了编码。(为什么再次编码)
> >>> 如[233,223,222] 执行下面操作后成了 [228,123,345,238,222,133](此数据是说明问题随便写的)
> >>>
> >>> > > +    UTF8Binary = unicode:characters_to_binary(S, utf8, utf8),
> >>> > > +    UTF8Str = binary_to_list(UTF8Binary),



jack:
> >>
> >> UTF8Binary = unicode:characters_to_binary(S, utf8, utf8),
> >> %% unicode:characters_to_binary(S, utf8, utf8)
> >> %% 和 unicode:characters_to_binary(S, unicode, utf8) 的结果是一样的。
> >>
> >> %% 此时,输入参数 list 里的每一个元素被当做一个 unicode 字符来进行编码处理。
> >> %% 大于 128 的 char 会被处理成两至三个 byte (也就是你所说的“重复编码”)。
> >>
> >> UTF8Str = binary_to_list(UTF8Binary),
> >> %% 简单的将一个 byte 对应为一个 char 来组成一个 list
> >>
> >> 如果你希望得到“正确”的处理结果,请确保在调用上述函数之前, List 里的每一个元素都已经是以 unicode
> >> 格式编码的字符(每个中文字符是一个元素,而不是两个或三个)。
> > 每一个!!!
> > 这是关键经验了...

相关推荐

    Python tutorial

    最权威的 Python 教程,由 Python 作者 Guido van Rossum 主笔,有少许学院味道。...英文原稿网址:http://docs.python.org/tut/简体中文版网址:http://wiki.woodpecker.org.cn/moin/March_Liu/PyTutorial

    Python编程规范

    其中文翻译:http://wiki.woodpecker.org.cn/moin/PythonCodingRule 精巧地址:http://bit.ly/3HURoL 在这里先简要叙述一下要点。 应用 Python 八荣八耻 以动手实践为荣,以只看不练为耻; 以打印日志为荣,以单步...

    A Byte of Python-简明Python教程【英文版】【高清带目录】

    知识点一:Python简介 Python是一种广泛使用的高级编程语言,由Guido van Rossum于1989年底发明。Python的设计哲学强调代码的可读性和简洁的语法。Python语言具有丰富和强大的库,可以轻松实现网络编程、游戏开发、...

    django step by step

    本文件将网上比较常见的django学习教程编辑了下,必须解压到f盘的根目录下,才能正常阅读。...主页: http://wiki.woodpecker.org.cn/moin/NewEdit BLOG: http://www.donews.net/limodou 版权: FDL

    一张图带我们入门Python基础教程

    http://wiki.woodpecker.org.cn/moin/ZqQuickIntoPy 最后微博有转载: 图片 英文版本 中文版本 勘误 来源: “这个图太棒了,有编程基础的人一下子就了解 Python 的用法了。真正的 30 分钟上手。”Bu

    PYTHON 入门

    - 中文版:[http://www.woodpecker.org.cn/diveintopython](http://www.woodpecker.org.cn/diveintopython) - **版权信息**: - 版权所有者:Mark Pilgrim (mailto:mark@diveintopython.org) - 版权所有组织:...

    Python入门基础.pptx

    3.http://wiki.woodpecker.org.cn/moin/ 4.http://download.csdn.net/ Python基础知识点: 1.初识Python 2.开始Python编程 3. Python编辑器IDLE Python基础语法: 1.语法格式和注释:Python的语法格式和其他...

    简明python教程

    不多说了。 http://www.woodpecker.org.cn/share/doc/abyteofpython_cn/chinese/全站内容。

    woodpecker-requests-master.zip

    《woodpecker-requests-master.zip:深入探索Python的请求库Woodpecker-Requests》 在Python编程领域,网络请求是日常开发中不可或缺的部分。而提到Python的网络请求库,我们通常会想到requests库,它以其简洁易用...

    woodpecker-client:异常日志收集客户端 环境隔离版本

    wpclient-agent是一个异常日志收集的客户端,用javaagent&asm实现,可以收集error级别(也可以配置...编译安装(可选)cd wpclient-agent/bin./woodpecker-packages.sh会在docker下生成wpclient-agent.zip运行文件,解

    ysoserial-0.0.5-all.jar

    ysoserial-0.0.5-all.jar反序列化漏洞利用,jar可以直接使用

    学习python (1)

    http://www.woodpecker.org.cn:9081/doc/abyteofpython_cn/chinese/index.html 学习编程快20年了,很少见到如此好的教程。简单,清晰。大部分的软件书籍翻译的是呕呀啁咂难为听,名声显赫的译者如候某人,也是50步笑...

    woodpecker

    创建过了就是修改) MedicalHistory创建需要使用创建,其有ID段,即表示一个病人的病历会有多个属性 1.cli客户端创建: $ woodpeckercli tx woodpecker set-attribute [name] [idNumber] [address]

    python笔记(1) 关于我们应不应该继续学习python

    Python社区提供了丰富的资源,如《Dive into Python》(http://book.huihoo.com/dive-into-python/5.4_zh-cn/html/toc/index.html)、官方文档(http://docs.python.org/)以及在线课程(http://woodpecker.org.cn/...

    测试框架Tavor.zip

    Tavor (Sindarin for woodpecker) 是一个易于实施的模糊测试(fuzzing)和三角调试算法(delta-debugging)框架。它有自己的格式,是一个类似EBNF的符号格式,它允许你定义文件格式、协议和其他结构化数据,且无需...

    征服python中文版

    - **资源地址**:英文版存储于http://diveintopython.org/,中文版则位于http://www.woodpecker.org.cn/diveintopython。 - **项目支持**:由Zoom.Quiet负责项目管理,得到了啄木鸟社区的支持。 #### 二、Python...

    Woodpecker_Frame:啄木鸟框架Solidworks工程图

    "Woodpecker_Frame" 是一个基于 Solidworks 软件的工程图框架,它为用户提供了高效绘制和管理工程图纸的工具集。Solidworks 是一款广泛使用的三维机械设计软件,其工程图功能允许设计师创建、编辑和管理产品的二维...

Global site tag (gtag.js) - Google Analytics