显示为问号的特殊字符

2024-01-31

使用 Python 编程语言时,我在输出 å、ä 和 ö 等字符时遇到问题。以下代码给出了一个问号 (?) 作为输出,而不是 å:

#coding: iso-8859-1
input = "å"
print input

以下代码可让您输入随机文本。 for 循环遍历输入的每个字符,将它们添加到字符串变量 a,然后输出结果字符串。这段代码工作正常;您可以输入 å、ä 和 ö,输出仍然正确。例如,“år”按预期输出“år”。

#coding: iso-8859-1
input = raw_input("Test: ")
a = ""
for i in range(0, len(input)):
    a = a + input[i]
print a

有趣的是如果我改变input = raw_input("Test: ") to input = "år",它将为“å”输出一个问号(?)。

#coding: iso-8859-1
input = "år"
a = ""
for i in range(0, len(input)):
     a = a + input[i]
print a

就其价值而言,我正在使用 TextWrangler,并且我的文档的字符编码设置为 ISO Latin 1。这是什么原因造成的?我该如何解决这个问题?


您使用的是 Python 2,我假设在像 Linux 这样以 UTF-8 编码 I/O 的平台上运行。

Python 2 的""文字代表字节串。所以当你指定"år"在 ISO 8859-1 编码的源文件中,变量input有价值b'\xe5r'。当你print这样,原始字节将输出到控制台,但显示为问号,因为它们不是有效的 UTF-8。

为了演示,请尝试使用print repr(a)代替print a.

当你使用raw_input(),用户的输入已经是 UTF-8 编码的,因此可以正确输出。

要解决此问题,可以执行以下任一操作:

  • 在打印之前将字符串编码为 UTF-8:

    print a.encode('utf-8')
    
  • 使用 Unicode 字符串 (u'text') 而不是字节字符串。您需要小心解码输入,因为在 Python 2 上,raw_input()返回字节字符串而不是文本字符串。如果您知道输入是 UTF-8,请使用raw_input().decode('utf-8').

  • 使用 UTF-8 而不是 iso-8859-1 对源文件进行编码。那么字节字符串文字就已经是 UTF-8 格式了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

显示为问号的特殊字符 的相关文章

随机推荐

  • 在maven多模块包中创建JAR文件作为聚合

    我有以下架构 现在 如果我正在创建父子关系并首先构建子项 然后构建父项 那么它会正常工作
  • 如何从 Java 9 中的另一个模块获取 ResourceBundle?

    我有两个模块 模块 a 和模块 b 模块 a 具有属性文件 com foo texts en properties 模块 a 导出com foo包裹 在 module b 中我想获取这个资源 为此 我在 module b 中执行以下操作 M
  • 仅使某一部分可滚动,而不是整个页面

    我正在开发一个项目 其中一个部分通过从数据库请求数据来填充元素 因此其中的元素数量变化很大 棘手的部分是 我们的设计基于这样的想法 不必在页面上滚动 而是在必要时在部分上滚动 我想用overflow在这些部分就足够了 但它没有给我预期的结果
  • 分割视图控制器不作为根视图控制器

    我有一个应用程序需要用户LOG IN 用户登录后 我想使用分割视图控制器来显示数据 诀窍是 苹果不希望我推动SplitViewController 因为他们希望它成为根视图控制器 从我的角度来看 这是可以的 但我需要用户先登录 任何人都知道
  • 如何在 QtCreator 中重命名文件 .h .cpp

    如何在QtCreator中重命名源文件 我已经更改了类的名称 但我没有看到更改它包含的文件的选项 我使用的是2 7 0版本 如果您使用 qmake 重命名很容易 在 项目 左侧面板中找到您的文件 然后在上下文菜单中选择 重命名 Qt Cre
  • Visual Studio 在字符类中查找并替换右方括号 ]

    我想创建一个否定字符类来匹配像这样的方括号标签 方括号标签 问题是 字符结束了字符类 I tried 但当我运行它时出现语法错误 这是在查找和替换正则表达式引擎中 它与标准 NET 引擎略有不同 仅供参考 您忘记转义最后的结束括号
  • 使用奇怪的命名空间序列化 XML?

    问题 用于序列化此 XML 内容的类看起来如何
  • 导航栏大标题到小标题切换不流畅 iOS 13,粘性

    我有一个UINavigationController默认值为navigationBar prefersLargeTitles true 我将其切换为false when I push进入一个新场景 我们称之为 DetailsViewCont
  • 为什么使用 DFS 而不是 BFS 来查找图中的循环

    DFS 主要用于查找图中的循环 而不是 BFS 有什么理由吗 两者都可以查找节点是否已经存在 遍历树 图时访问过 深度优先搜索比广度优先搜索更节省内存 因为您可以更快地回溯 如果使用调用堆栈 实现起来也更容易 但这依赖于不会溢出堆栈的最长路
  • 登录 Twitter 后如何获取 oauth 令牌?

    登录 Twitter 后 我可以打印一些有用的数据 例如用户名和用户 ID 但是 OAuth 令牌始终为空 我怎样才能得到它 我需要将 OAuth 令牌发送到我的服务器 以便它可以验证用户确实是他所说的人 ACAccountStore ac
  • 使用 jQuery 淡入淡出背景图像?

    到目前为止 我已经尝试了很多方法 但没有成功 有任何想法吗 您可以淡化背景颜色 但不能淡化背景图像 解决这个问题的方法是将你的图像设置为 img 标签并默认隐藏它们display none 给出你的图像position absolute a
  • Outlook 邮件项目作为流

    是否可以退货MailItem直接作为Stream MailItem from Microsoft Office Interop Outlook 现在我找到了一个临时解决方案 首先保存一个MailItem到一个目录 打开它并将流返回到文件 然
  • 在 matlab 中,如何放大脚本中的绘图

    我想使用脚本放大情节 我只对水平约束缩放感兴趣 所以我想做一些类似的事情 p plot myData z zoom set z ZoomInToPoints 50 100 or p plot myData myZoom 50 100 因此
  • Qt:设置QMainWindow的大小

    我是Qt新手 所以我想知道是否有办法设置a的大小QMainWindow 例如 用户桌面的 70 我尝试了拉伸因子 但没有用 QWidget setFixedSize我认为有效 但仅限于像素数 在 QMainWindow 构造函数中的某个位置
  • Protractor - Jasmine - 将文件下载到相对路径

    我已阅读并遵循以下问题及其评论 答案 问题1 https stackoverflow com questions 27785731 cant stop protractor from displaying file download pro
  • 从 Python 文档字符串自动生成 GitHub Wiki 文档

    标题说明了一切 我的想法是为我的所有模块 类和函数提供文档字符串 并以某种方式通过 github wiki 很好地导航文档 此外 该文档应与最新代码同步 这意味着它应在推送时更新 重新生成 那可能吗 只需通过管道传输生成的输出docstri
  • __getitem__, __setitem__ 多个键

    我正在尝试创建一个类 它将数据存储在本地缓冲区中 并充当数据库的接口 我有以下代码 class Table object def init self tableName columnDict self tableName tableName
  • Python 与 QML (Qt-Quick) 配合得很好吗? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我是 Qt Quick 的初学者 我不知道 Qt 是 QML 的基础 而且我也不熟悉 C 它又是 Qt 和 QML 的主要支持语言 我
  • 为什么 assembleDebug 比项目构建花费的时间要长得多以及如何优化它?

    我最近一直在处理 Android Studio 中的 gradle 构建时间 通过删除一些依赖项 我成功地将构建时间从大约 3 分钟减少到 10 秒 但事情是这样的 当我重建项目时 大约需要 10 秒 15 13 43 Executing
  • 显示为问号的特殊字符

    使用 Python 编程语言时 我在输出 和 等字符时遇到问题 以下代码给出了一个问号 作为输出 而不是 coding iso 8859 1 input print input 以下代码可让您输入随机文本 for 循环遍历输入的每个字符 将