在Python(或任何语言)中,“upper”函数对印地语、阿姆哈拉语和其他非拉丁字符集有何作用?

问题描述 投票:0回答:2

主题说明了一切。一直在寻找答案,但似乎找不到。

我正在编写一个网络应用程序,它将数据存储在数据库中,并将语言文件翻译成各种字符集。在不同的时刻,文本将会被呈现。我想控制表示,例如字符串开头和结尾处的虚假空格。我还想确保一些字母是大写或小写。

我的问题是:当字符集只有一种情况时,大写/小写函数会发生什么?

编辑子问题:是否有任何意想不到的副作用需要注意?

我的猜测是,你只需找回唯一的角色即可。

编辑 - 添加描述 提出这个问题的主要原因是我正在编写一个网络应用程序,该应用程序将在偏远地区的计算机上分发和运行,几乎没有机会修复“现场”错误。它不是一个复杂的网络应用程序,但可以使用许多不同的语言字符集运行。我想在发布服务器之前先确定自己的立场。

uppercase lowercase non-latin
2个回答
2
投票

首先Python中的

upper()
lower()
方法可以应用于印地语、阿姆哈拉语和非字母字符集。

例如,如果存在该字符的等效大写字符,则

upper()
方法将转换小写字符。如果没有,那就没有。

或者更好地说,如果没有什么可以转换,它保持不变。


0
投票

一个老问题,但可能需要进一步阐明。

大小写映射将使单院脚本(没有大小写区别的脚本)保持原样。只有两院制文字中的文本才会受到影响。

大小写映射可以是语言/区域设置不敏感的,也可以是语言/区域设置敏感的。在 Python 中,

str.lower()
str.upper()
方法对语言和区域设置不敏感。

一个可能的副作用是大小写映射可能是错误的,具体取决于大小写文本的语言。

值得注意的是,Unicode 定义了简单大小写映射和完整大小写映射。简单的大小写映射将是一对一的,即单个字符被大小写映射为单个字符。 完整案例映射不是一对一的。在某些情况下,单个字符会被区分为多个字符。此外,大小写映射并不对称,并且并非两院制脚本中的所有字母都有大小写对。

总会有边缘情况。但如果您的网络应用程序旨在能够处理任何语言,这可能只是一个考虑因素。对于针对特定语言集的多语言 Web 应用程序,这可能不是问题。

Python 使用完整的语言不区分大小写映射。

对于多语言网络应用程序,最好使用语言敏感的方法。如果您需要区分语言的大小写映射,您可以:

  1. 使用 PyICU 或类似工具在后端进行案例映射,或者
  2. 在前端使用 Javascript 进行大小写映射。
© www.soinside.com 2019 - 2024. All rights reserved.