Questions tagged «unicode»

Unicode是一种通用字符集,用于描述包含所有书写系统,技术符号和标点符号的书写文本所需的所有字符。

20
是否应将UTF-16视为有害的?
我要问的是一个有争议的问题:“是否应该将最流行的编码之一UTF-16视为有害?” 我为什么要问这个问题? 有多少程序员知道UTF-16实际上是可变长度编码的事实?我的意思是,有些代码点以代理对的形式表示,并包含多个元素。 我知道; 许多应用程序,框架和API使用UTF-16,例如Java的String,C#的String,Win32 API,Qt GUI库,ICU Unicode库等。但是,所有这些都在处理中存在许多基本的错误。 BMP中的字符数(应使用两个UTF-16元素编码的字符)。 例如,尝试编辑以下字符之一: 𝄞(U + 1D11E)音乐符号G CLEF 𝕥(U + 1D565)数学双打击小T 𝟶(U + 1D7F6)数学单点数字零 U(U + 2008A)汉字 您可能会错过一些字体,具体取决于您安装的字体。这些字符都在BMP(基本多语言平面)之外。如果看不到这些字符,也可以尝试在Unicode字符参考​​中查看它们。 例如,尝试在Windows中创建包含这些字符的文件名。尝试使用“退格键”删除这些字符,以查看它们在使用UTF-16的不同应用程序中的行为。我做了一些测试,结果很糟糕: Opera在编辑它们时遇到问题(在退格键上需要按2下删除) 记事本无法正确处理它们(删除需要按两次退格键) 在“窗口”对话框中编辑的文件名已损坏(需要删除,请按两次退格键) 所有QT3应用程序都不能处理它们-显示两个空的正方形而不是一个符号。 u'X'!=unicode('X','utf-16')当X在BMP之外的字符直接在某些平台上使用时,Python会错误地编码此类字符。 当Python用UTF-16 Unicode字符串编译时,Python 2.5 unicodedata无法获得此类字符的属性。 如果直接将它们作为Unicode字符进行编辑,则StackOverflow似乎从文本中删除了这些字符(这些字符使用HTML Unicode转义符显示)。 当受MaxLength限制时,WinForms TextBox可能会生成无效的字符串。 在使用UTF-16的许多应用程序中,此类错误似乎非常容易找到。 那么...您认为UTF-16应该被认为有害吗?
432 unicode 

5
UTF-8是否能够支持将广泛的外语与数百万个新字符结合在一起?
如果发生外星人入侵,我们被迫在我们所有现有的计算机系统中支持他们的语言,那么UTF-8的设计是否允许他们容纳大量字符? (当然,我们不知道外星人是否真的有语言,他们是否或如何交流,但是为了争辩,请想象他们确实如此。) 例如,如果它们的语言由数百万个新发现的字形,符号和/或组合字符组成,那么从理论上讲,UTF-8能否以不间断的方式扩展为包括这些新字形,并且仍支持所有现有软件? 我对字形是否远远超过当前的大小限制并需要更多字节来表示单个字形感兴趣。如果无法扩展UTF-8 ,是否证明相对于UTF-32的唯一优势仅仅是小写字符的大小?
86 unicode  utf-8 

15
在变量名中使用Unicode字符是否不好?[关闭]
我最近尝试对Python 3实现排名算法AllegSkill。 这是数学的样子: 不完全是。 这就是我写的: t = (µw-µl)/c # those are used in e = ε/c # multiple places. σw_new = (σw**2 * (1 - (σw**2)/(c**2)*Wwin(t, e)) + γ**2)**.5 我实际上以为Python 3不幸的是不接受√或²作为变量名。 >>> √ = lambda x: x**.5 File "<stdin>", line 1 √ = lambda x: x**.5 ^ SyntaxError: invalid character …
82 naming  unicode 

8
为什么会有多种Unicode编码?
我认为Unicode旨在解决由于大多数先前尝试(ASCII等)中的地址空间较小(8位)而导致具有许多不同编码的整个问题。 为什么会有那么多Unicode编码?甚至是(基本上)同一版本的多个版本,例如UTF-8,UTF-16等。

2
UTF-8 CSV文件是否应包含BOM(字节顺序标记)?
我们的业务线软件允许用户将某些数据保存为CSV。由于野外使用了许多不同的格式(都称为“ CSV”),因此我们试图确定“默认格式”应是什么样。 关于行/字段分隔符和转义,我们可以使用一个标准:RFC 4180。 关于文本编码,UTF-8似乎在过去十年中以“默认文本文件格式”出现,因此我们将使用它。 一个悬而未决的问题是:我们是否应该在开始时添加BOM?我已经阅读了有关BOM总体使用的多种观点和优缺点,但是对于在CSV文件中使用BOM而言,是否存在“正式”建议或至少某种形式的社区共识?

2
Unicode许可证
Unicode 使用条款规定,使用其数据文件(或它们的修改)的任何软件都应带有Unicode许可证参考。在我看来,大多数Unicode库都具有检查字符是否为数字,字母,符号等的功能,因此将包含对Unicode数据文件的修改(通常以表格的形式)。这是否意味着许可证适用,并且使用此类Unicode库的所有应用程序都应带有许可证? 我已经检查了一下,似乎很少有Unicode程序可以携带许可证,尽管可以说,大多数不携带许可证的程序都是来自Unicode联盟成员的公司(它们获得许可证豁免吗?)。 有些(例如Mozilla)只是“联络会员”,尽管他们的软件不携带许可证(据我所知),但它们显然依赖于从这些数据文件中获取的数据。Mozilla是否违反许可证? 我们是否应该在所有包含任何形式的高级Unicode支持(即,一定要依赖Unicode数据文件)的应用程序中携带许可证?还是存在某种形式的广泛豁免(因为那里很少有程序携带许可证)? 我已将此问题转发给Unicode工作人员。如果有的话,我会在这里张贴回覆。

3
为什么在Microsoft SQL Server中我们需要在字符串前放置N?
我正在学习T-SQL。从我看到的示例中,要在varchar()单元格中插入文本,我只能编写要插入的字符串,但是对于nvarchar()单元格,每个示例都在字符串前加上字母N。 我在具有nvarchar()行的表上尝试了以下查询,并且工作正常,因此不需要前缀N: insert into [TableName] values ('Hello', 'World') 为什么在我看到的每个示例中,字符串都以N为前缀? 使用此前缀的利弊是什么?

8
是否应该弃用除UTF-8(也许还有UTF-16 / UTF-32)之外的字符编码?
我的烦恼正在研究如此众多的软件项目,这些项目具有大量的字符集支持代码。不要误会我的意思,我全都出于兼容性的考虑,并且我很高兴文本编辑器允许您打开并保存多个字符集的文件。令我烦恼的是,如何将非通用字符编码的泛滥称为“适当的Unicode支持”而不是“问题”。 例如,让我选择PostgreSQL及其字符集支持。PostgreSQL处理两种类型的编码: 客户端编码:用于客户端和服务器之间的通信。 服务器编码:用于将文本内部存储在数据库中。 我可以理解为什么支持很多客户端编码是一件好事。它使不在UTF-8中运行的客户端无需进行转换即可与PostgreSQL通信。我不明白的是:为什么PostgreSQL支持多种服务器编码?数据库文件(几乎总是)从一个PostgreSQL版本到另一个版本不兼容,因此,跨版本兼容性不是这里的问题。 UTF-8是唯一可以对所有Unicode代码点进行编码的标准,兼容ASCII的字符集(如果我记错了,请告诉我)。我在阵营中认为UTF-8是最好的字符集,但我愿意忍受其他通用字符集,例如UTF-16和UTF-32。 我认为所有不通用的字符集都应弃用。他们不应该有任何令人信服的理由吗?


5
哪些问题导致人们使用日语特定的编​​码而不是Unicode?
在工作中,我遇到了许多使用Shift-JIS和其他编码的日语文本文件。对于所有计算机用户,这会导致许多mojibake(字符不可读)问题。Unicode旨在通过为所有语言定义单个字符集来解决此类问题,并且建议在Internet上使用UTF-8序列化。那么,为什么每个人都不能从日语专用的编码转换为UTF-8?UTF-8存在哪些问题或弊端? 编辑:W3C列出了Unicode的一些已知的问题,这可能也是原因吗?

1
为什么Unicode中有这么多空格和换行符?
Unicode可能有50个空格 \ u0009 \ u000A- \ u000D \ u0020 \ u0085 \ u00A0 \ u1680 \ u180E \ u2000- \ u200A \ u2028 \ u2029 \ u202F \ u205F \ u3000] [\ u0009 \ u000A- \ u000D \ u0020 \ u0085 \ u00A0 \ u1680 \ u180E \ u2000- \ …
19 unicode 


3
是否可以编写适用于所有本地化和字符串类型的通用字符串反向函数?
我只是在看Dev-Days的Jon Skeet(与Tony the Pony)一起演讲。 尽管“编写字符串反向函数”正在对采访101进行编码-我不确定实际上是否可以编写一种通用的字符串反向函数,但肯定不是在所有本地化和所有字符串类型中都有效的函数。 除了检测输入字符串是否为ascii,UTF8,UTF16(固定长度和可变长度)等之外 ,Jon还突出显示了“对下一个字符应用重音符号”(U + 0301)代码。然后有可能显示或不显示或连字编码为双字符的连字。 似乎“反向字符串”实际上是较难的计算机科学任务之一!

2
UTF-16是固定宽度还是可变宽度?为什么UTF-8没有字节顺序问题?
UTF-16是固定宽度还是可变宽度?我从不同的来源得到了不同的结果: 从http://www.tbray.org/ongoing/When/200x/2003/04/26/UTF: UTF-16将Unicode字符存储在16位块中。 从http://en.wikipedia.org/wiki/UTF-16/UCS-2: UTF-16(16位Unicode转换格式)是Unicode字符编码,能够在Unicode代码空间中从0到0x10FFFF编码1,112,064 [1]个数字(称为代码点)。它产生每个代码点一个或两个16位代码单元的可变长度结果。 从第一个来源 UTF-8还具有编码单位为字节的优点,因此不存在字节顺序问题。 为什么UTF-8没有字节顺序问题?它是可变宽度的,一个字符可能包含一个以上的字节,所以我认为字节顺序仍然会是一个问题吗? 谢谢并恭祝安康!

3
我可以使用Unicode哨兵值吗?
我正在设计一种文件格式,所以我想正确地做。既然是二进制格式,该文件的第一个字节(或字节)应不形成有效的文本字符(就像在PNG文件头1)。这使得无法识别格式的工具通过查看前几个字节仍然可以看到它不是文本文件。 上面的任何代码点0x7F都是无效的US-ASCII,因此很容易。但是对于Unicode则完全不同。除了有效的Unicode字符有私用字符,noncharacters和哨兵,我在发现Unicode的私用字符,Noncharacters和哨兵常见问题解答。 我可以在文件开头使用什么样的前哨字节序列,从而导致无效的US-ASCII,UTF-8,UTF-16LE和UTF-16BE? 显然,第一个字节不能具有低于0x80此值的值,因为该值将是有效的US-ASCII(控制)字符,因此0x00无法使用。 另外,由于专用字符是有效的Unicode字符,所以我也不能使用这些代码点。 由于它必须同时使用Little-endian和Big-endian UTF-16,因此也不能使用非字符,0xFFFE因为其反向0xFEFF是有效的Unicode字符。 上面提到的常见问题解答建议不要使用任何非字符,因为这仍然会导致有效的Unicode序列,因此,类似的东西0xFFFF也无法使用。 让我使用的面向未来的前哨值是什么? 1)PNG格式的第一个字节为非ASCII 0x89值,其后为字符串PNG。读取PNG的前几个字节的工具可能会确定它是二进制文件,因为它无法解释0x89。另一方面,GIF文件直接以有效且可读的ASCII字符串GIF开头,后跟另外三个有效ASCII字符。对于GIF,工具可能会确定它是可读的文本文件。这是错误的,并且以非文本字节序列启动文件的想法来自Andy McFadden的“ 设计文件格式”。
14 unicode 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.