Python中文
首页
教程
问答
标签
搜索
登录
注册
在python2+GTK中检测/删除未配对的代理项字符
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>在python2.7中,我可以成功地将Unicode字符串<code>"abc\udc34xyz"</code>转换为UTF-8(结果是<code>"abc\xed\xb0\xb4xyz"</code>)。但是,当我把UTF-8字符串传递给例如<code>pango_parse_markup()</code>或<code>g_convert_with_fallback()</code>时,我会得到诸如“转换输入中的无效字节序列”之类的错误。显然,GTK/Pango函数检测字符串中的“未配对代理项”,并且(正确吗?)拒绝它。在</p> <p>python3甚至不允许将Unicode字符串转换为UTF-8(错误:“'UTF-8'codec无法对位置3中的字符'\udc34'进行编码:不允许使用代理项”),但我可以运行<code>"abc\udc34xyz".encode("utf8", "replace")</code>来获取有效的UTF8字符串,其中唯一的代理项被其他字符替换。这对我来说很好,但是我需要一个Python2的解决方案。在</p> <p>所以问题是:在Python2.7中,如何将Unicode字符串转换为UTF-8,同时用U+FFFD等替换字符替换单独的代理项?最好只使用标准的Python函数和GTK/GLib/G。。。应该使用函数。在</p> <p>顺便说一句,Iconv可以将字符串转换为UTF8,但只需删除错误字符,而不是用U+FFFD替换它。在</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>以下是解决这个问题的方法:</p> <p><code>invalid_string.encode('utf16').decode('utf16', 'replace')</code></p> <p>我的理解是代理对是UTF-16的一部分,这就是为什么用UTF-8进行编码/解码没有任何作用。在</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
如何添加虚拟方法
3 回答
如何添加表示整数的擦边字符串?
7 回答
如何添加要在Bokeh中使用的新font.ttf文件?
3 回答
如何添加要显示的矩阵XY轴编号和XY轴
7 回答
如何添加计数?
2 回答
如何添加计数器函数?
7 回答
如何添加计数器列来计算数据帧中另一列中的特定值?
4 回答
如何添加计数器来跟踪while循环中的月份和年份?
5 回答
如何添加计数并删除countplot的顶部和右侧脊椎?
3 回答
如何添加计时器wx.应用程序更新窗口对象的主循环?
8 回答
如何添加评论到帖子?PostDetailVew,Django 2.1.5
6 回答
如何添加评论拉梅尔亚姆
4 回答
如何添加诸如矩阵Python/Pandas之类的数据帧?
7 回答
如何添加谷歌地点自动完成到Flask?
1 回答
如何添加超时、python discord bot
7 回答
如何添加超过1dp的检查
8 回答
如何添加距离方法
7 回答
如何添加跟随游戏的敌人精灵
1 回答
如何添加路径以便python可以找到程序?
9 回答
如何添加身份验证/安全性以使用happybase访问HBase?
3 回答