规范化的UTF-8是怎么回事?
icu project (现在也有但是,我试图找出这意味着什么用于应用程序.例如,在哪些情况下,我想要"规范在等效"而不是"兼容性等价"或vis-versa? 解决方案 关于Uncode归一化的所有内容 规范归一化 Unicode包括多种编码某些字符的方法,最著名的是重音字符.规范归一化将代码点更改为规范编码形式.由此产生的代码点应与原始代码相同,除非字体或渲染引擎中的任何错误. 何时使用 由于结果看起来相同,因此在存储或显示之前,将规范归一化始终是安全的,只要您可以忍受结果与输入相同. 规范归一化有两种形式:NFD和NFC.这两个是等效的,因为一个人可以在这两种形式之间转换而不会损失.比较NFC下的两个字符串将始终给出与在NFD下进行比较的结果. nfd nfd使角色完全扩展.这是要计算的更快的归一化形式,但是结果以更多的代码点(即使用更多空间). 如果您只想比较两个尚未标准化的字符串,则这是首选的归一化形式,除非您知道需要兼容性
6 2024-04-06
编程技术问答社区
在PySpark中,用Apache Spark数据帧去除重音的最好方法是什么?
我需要从西班牙语中的字符和其他语言中删除重音,从不同的数据集中删除重音. 我已经在此 post 可以去除特殊的口音.问题是该函数很慢,因为它使用UDF. 我只是想知道是否可以提高功能的性能以在更少的时间内获得结果,因为这对小型数据框架有好处,但对大型数据框架不利. 预先感谢. 在这里代码,您将能够按照呈现来运行它: # Importing sql types from pyspark.sql.types import StringType, IntegerType, StructType, StructField from pyspark.sql.functions import udf, col import unicodedata # Building a simple dataframe: schema = StructType([StructField("city", StringType(), True), S
18 2024-03-01
编程技术问答社区
在UTF8 Unicode的整理下,哪些字符算作相同的字符?什么VB.net函数可以用来合并它们?
也是什么是vb.net函数,将所有这些不同字符映射到其最标准的形式中. 例如,tolower将a和a映射到同一字符吗? 我需要这些字符相同的功能 德语 ß=== S ü=== u χιοσ==χίος 否则,有时我插入χιοσ,后者插入χίοςmysql抱怨ID已经存在. 所以我想创建一个唯一的ID,将所有这些奇怪的字符映射到一个更稳定的字符中. 解决方案 有关事物的编码方面,请查看将所有这些不同字符映射到最标准的形式"的人来说,默认的正常形式(c)都可以正常工作. 但是,一旦您进入数据库并处理碰撞,事情就会变得更加复杂. Unicode归一化永远不会改变字符情况.它仅涵盖字符基本上等效的情况 - 看起来相同 1 ,是相同的.例如, Χιοσ != Χίος, 这两个Sigma字符被认为 non-equivalent 和Accented Iota()等效于两个字符的序列,即普通的iota(\u03B9)和重音(\u031
26 2024-01-07
编程技术问答社区
如何将一个字符串规范化?
在.net中,您可以使用 /a>和一个 Text.NormalizationForm Text.NormalizationForm enum. in .net用于Windows Store应用程序,两者都不可用.我已经在String类中以及System.Text和System.Globalization名称空间中看过. 我错过了什么吗?我如何在Windows Store应用中标准化字符串? 有人知道为什么不可用于商店应用程序Normalize方法? 解决方案 正如您所指出的, Normalize方法 但是,这只是称为更好的是,此功能在批准的Win32和COM列表中API在Windows Store应用程序中使用的功能. 也就是说,您会发表以下声明: public enum NORM_FORM { NormalizationOther = 0, NormalizationC = 0x1, NormalizationD
16 2024-01-05
编程技术问答社区
Windows中的Unicode规范化
我一直在Windows中使用" Unicode Strings",只要...我已经了解了Unicode(例如,毕业后).但是,始终使我感到惊讶的是,Win32API非常宽松地提到" Unicode".特别是,MSN提到的" Unicode"变体是UTF-16(尽管"宽Char"术语来自以下事实:它以前是UCS-2,不是Unicode).但是,几乎没有提及Uncode归一化. msn有几页有关 win32和.NET框架支持所有四个标准化表格. 但是,我在文档中没有找到Win32 API使用的(或理解)的任何地方. 问题1 :默认情况下,用户输入使用了哪种归一化形式(例如编辑控件),并通过MultiByteToWideChar()? 转换 问题2 :传递给Win32API功能的字符串是否以特定的归一化形式,或者内核和文件系统归一化范围 - agnostic? 解决方案 来自MSDN文章使用使用Unicode归一化以表示字符串. Windows,Micro
36 2023-12-05
编程技术问答社区
VBA字符串归一化(通过Winapi)
我是尝试在VBA编写代码以使用Winapi功能的新手. Winapi归一化功能可以使用什么编码? UTF-16是我期望的,但是以下内容不起作用.字符的数量似乎不是正确计算的,然后尝试创建归一化字符串的尝试将崩溃访问. 'normFormEnum 'not random numbers, but from ... 'https://msdn.microsoft.com/en-us/library/windows/desktop/dd319094(v=vs.85).aspx 'for use in calling the Win API Function NormalizeString() Public Enum normFormEnum normFOther = 0 normFC = 1 'the W3C (Internet) required normalization format normFD = 2 normFKC = 5 n
40 2023-12-04
编程技术问答社区
如何将unicode的重音字符转换为没有重音的纯ascii字符?
我正在尝试从字典网站下载一些内容,例如 http://http://.reference.com/浏览/苹果s = t 我遇到的问题是原始段落具有所有这些曲折的行和反向字母,因此,当我阅读本地文件时,我最终会带有\ x85,\ xa7,\ x8d等. 我的问题是,有什么方法可以将所有这些逃生字符转换为它们各自的UTF-8字符,例如,如果有"à",我该如何将其转换为标准'a'? python调用代码: import os word = 'apple' os.system(r'wget.lnk --directory-prefix=G:/projects/words/dictionary/urls/ --output-document=G:\projects\words\dictionary\urls/' + word + '-dict.html http://dictionary.reference.com/browse/' + word) 我在Windows 7系
22 2023-12-03
编程技术问答社区
如何在VBA中从韩文字符串中提取字符
需要从MS-Excel和MS-Access中的韩语单词中提取初始字符. 当我使用左("한글",1)时,它将返回第一个音节,即,我需要的是初始字符,即. 有功能要这样做吗?还是至少一个习语? 如果您知道如何从字符串中获取Unicode值,我将可以从那里进行处理,但是我敢肯定我会重新发明轮子. (再次) 解决方案 我认为您要寻找的是字节数组 昏暗的Abyte()字节 abyte ="한글" 应该为您的字符串 中每个字符的两个Unicode值提供 其他解决方案 免责声明:我对访问或VBA一无所知,但是您所拥有的是通用的Unicode问题,这不是针对这些工具的特定问题.我重述了您的问题以添加与此问题相关的标签. 访问是通过返回한来做正确的事情,它的确是该两字符字符串的第一个字符.您想要的是该hangul的规范分解在其组成的jamos中,也称为归一化表格D(NFD),用于"分解". NFD表格是ᄒ하‌ᆫ,其中第一个字符是您想要的. 还请注意,按照您的示例,您似乎希
16 2023-11-16
编程技术问答社区
文本运行不符合Unicode规范化形式C
当我试图验证我的网站时,我会收到以下错误: 文本运行不在Unicode归一化形式中C a:这是什么意思? b:我可以用记事本++修复它吗? c:如果B否,我该如何使用免费工具(不是Dreamweaver)修复此操作? 解决方案 a.它的意思是它说的(请参阅Dan04的简短答案的解释和长期的Unicode标准),但它只是表明验证者的作者想发出警告. HTML5规则不需要标准化表格C(NFC);这通常是W3C所偏爱的. b.除非您决定使用NFC实际上会更好,否则无需修复任何问题.如果这样做,那么有各种自动转换为NFC的工具,例如免费您是否使用NFC取决于许多考虑因素和所涉及的字符.通常,NFC效果更好,但是在某些情况下,一种替代性的非NFC演示可以在某些特定的处理中产生更合适的渲染或更好的作用. 例如,在重复的问题中,参考Ω已报告为触发消息. (验证器实际上也检查了作为此类参考的字符,而不仅仅是纯文本级别NFC检查.)参考代表U+212
8 2023-11-12
编程技术问答社区
使用PHP mysql_* SET NAMES UTF 8和Mysql表的utf8_unicode_ci进行字符串比较
i有一个带有列状态的mysql表 - 各州来自欧洲 - 列表和列在utf8_unicode_ci中. 当我调用数据库时,我会使用 mysql_select_db($database_WTF, $WTF); mysql_query('SET NAMES utf8'); $query_Recordset1 = "SELECT * FROM newmeets WHERE newmeets.`State` IS NOT NULL AND newmeets.`State` != '' ORDER BY newmeets.`State` ASC "; 我然后通过这个简单的循环 运行它 mysql_select_db($database_WTF, $WTF); mysql_query('SET NAMES utf8'); $query_Recordset1 = "SELECT * FROM newmeets WHE
22 2023-11-12
编程技术问答社区
在PHP中,我如何处理HFS+与其他地方的编码文件名的差异?
我正在创建一个非常简单的文件搜索,其中搜索数据库是一个文本文件,每行只有一个文件名.该数据库是使用PHP构建的,并且通过greppping File(也有PHP)找到匹配. 这在Linux中效果很好,但是read(); // "." $h->read(); // ".." $filename = $h->read(); print "string: $mystring and filename: $filename are "; if ($mystring == $filename) print "equal\n"; else print "different\n"; 运行macOSX时: $ php test.php string: abcóüÚdefå and filename: abcóüÚdef
18 2023-11-12
编程技术问答社区
OS X-如何计算规范化的文件名
我需要在Windows和OS X上生成的文件名之间创建一个映射.我知道OS X "将所有文件名转换为分解的unicode" 但是,"大多数卷格式不遵循这些正常形式的确切规范" 因此,使用标准UTF8 API将Windows名称转换为NFD并确保我拥有正确的OS X名称似乎并不是一个简单的问题.有没有办法可以确定实际的OS X文件名是什么,而无需实际创建文件系统中的文件,然后扫描目录以查看实际创建的内容? 解决方案 我认为 HFS加音量格式: 注意:Mac OS文本编码转换器提供了几个常数 使您可以转换为存储的规范,分解的形式 在HFS和卷上.使用CreateTexenCoding创建文本时 编码,您应该将TextencoDingbase设置为 KTEXTENCODINGINICODEV2_0,将TextEncodingVariant设置为 kunicodecanonicaldecompvariant,将TextencoDingformat设置为 kunicode16b
32 2023-11-11
编程技术问答社区
C/C++中的Unicode字符串规范化
想知道如何在C/C ++中标准化字符串(包含UTF-8/UTF-16). 在.net中有一个函数 string.normalize . 我过去曾使用UTF8-CPP,但没有提供这样的功能. icu 和QT提供弦标准化,但我更喜欢轻量级解决方案. 是否有任何"轻量级"解决方案? 解决方案 正如我在 =" https://julialang.org/utf8proc/" rel =" nofollow noreferrer"> utf8proc 是一个非常不错的,轻巧的,用于基本Unicode功能的库,包括Unicode String归一化. 其他解决方案 对于Windows,有NormalizeString()函数(不幸的是Vista,后来仅在MSDN上看到): 这是我到目前为止发现的最简单方法. 我想这也很轻. int NormalizeString( _In_ NORM_FORM NormForm, _In_
28 2023-11-11
编程技术问答社区
php iconv translit用于去除重音:没有按规定工作?
考虑此简单代码: echo iconv('UTF-8', 'ASCII//TRANSLIT', 'è'); 它打印 `e 而不是 e 你知道我做错了什么吗? 添加setLocale后什么都没有改变 setlocale(LC_COLLATE, 'en_US.utf8'); echo iconv('UTF-8', 'ASCII//TRANSLIT', 'è'); 解决方案 我具有此标准功能,可以返回无效URL字符的有效URL字符串.魔术似乎在//删除不需要的字符评论之后. 这是从Symfony Framework文档中获取的:function slugify($text) { // replace non letter or digits by - $text = preg_replace('#[^\\pL\d]+#u', '-', $text); // trim $text = trim($text, '-'); // transl
14 2023-11-11
编程技术问答社区
在Unicode编码中,是否有每个 "字符 "都只是一个码位的编码?
尝试重新塑造:您可以将每个组合字符组合映射到一个代码点吗? 我是Unicode的新手,但是在我看来,没有编码,归一化或表示形式,其中一个字符在Unicode中的每种情况下都是一个代码点.它是否正确? 这对于基本的多语言平面也是如此吗? 解决方案 如果您的意思是一个char ==一个数字(即,每个char都由相同数量的字节/单词/what-have-you表示):在ucs-4中,每个字符均由a表示4字节号.这足以使每个角色都以一个值代表,但是如果您不需要任何更高的字符,那是相当浪费的. 如果您是指兼容性序列(即:e +´=>é):在现有现代语言中使用的大多数组合都有单个字符表示.如果您要编造自己的语言,您可能会遇到问题...但是,如果您坚持人们实际使用的语言,那么您会没事的. 其他解决方案 您可以映射每个组合字符吗 组合成一个代码点? 每个结合字符组合?您提出的编码将如何表示字符串"à" ̈̉̊̋̌̍̎̏̐̑̒̓̔̽̾̿̀́͂̓̈́͆͊͋͌̕̚ͅ
26 2023-11-11
编程技术问答社区
这种情况下的UTF-8编码转换很奇怪吗?
我正在使用似乎对编码做一些魔术的远程应用程序.该应用程序会呈现明确的响应(我将其称为True和False),具体取决于用户输入.我知道两个有效的值,它们会呈现为" true",其他所有的值都应该是" false". 我发现(意外)有趣的是,提交损坏的价值导致" true". 示例输入: USER10 //gives True USER11 //gives True USER12 //gives False USER.. //gives False OTHERTHING //gives False 基本上只有这两个第一个值呈现真实响应. 我注意到的是用户±0(hex-wise \ x55 \ x53 \ x45 \ x52 \ x52 \ c0 \ xb1 \ x30)被认为是真实的. 我确实检查了其他十六进制字节,但没有成功.这使我得出一个结论,即\ xc0 \ xb1可以以某种方式翻译成0x31(='1'). 我的问题是 - 如何发生?该应用程序是否执
12 2023-11-06
编程技术问答社区
用R将字符串转换为规范的形式
这是两个在技术上不一样的字符串的示例.我知道这两个字符串来自相同的原始值,并且刚刚被不同处理. str1 [1] FALSE # Indeed the code points are different: charToRaw(str1) #> [1] 54 61 70 61 6a 6f cc 81 73 charToRaw(str2) #> [1] 54 61 70 61 6a c3 b3 73 # Somehow stringi can figure out that they're actually the same stringi::stri_cmp_equiv(str1, str2) #> [1] TRUE 由我想将str1和str2转为同一字符串 - 我理解,这被称为其规范形式. 我尝试了一些与strin
16 2023-11-06
编程技术问答社区
如何用UnicodeUtils处理组合变音符号?
我正在尝试将空间插入一串IPA字符串,例如将ɔ̃wɔ̃tɨ变成ɔ̃ w ɔ̃ t ɨ.我的第一个想法是使用拆分/加入: s = ɔ̃w̃ɔtɨ s.split('').join(' ') #=> ̃ ɔ w ̃ ɔ p t ɨ 正如我通过检查结果发现的那样,带有变节的字母实际上被编码为两个字符.经过一些研究,我找到了Unicodutils模块,并使用了每个_grapheme方法: UnicodeUtils.each_grapheme(s) {|g| g + ' '} #=> ɔ ̃w ̃ɔ p t ɨ 这很好,除了倒布雷夫商标.代码将̑a更改为̑ a.我尝试了归一化(UnicodeUtils.nfc,UnicodeUtils.nfd),但无济于事.我不知道为什么each_grapheme方法在此特定的变节标记上有问题,但我注意到,在Gedit中,Breve也被视为一个单独的角色,而不是Tildes,口音等.所以我的问题是以下内容:是否有一种直接的归一化方法,即将Lat
22 2023-11-06
编程技术问答社区
修复ColdFusion中的Unicode转换问题/漏洞
我们最近升级了安全扫描仪,并报告了一个新问题. 推荐的修复是什么? (我们恰好在ACF9上.) (另外,如果您有一个适合CF的示例,我将不胜感激.) Unicode转换问题 严重性 高 类型 配置 由模块报告 脚本(xss.script) 描述 此页面容易受到各种Unicode转换问题的影响 例如最佳拟合映射,长长的字节序列,形式不佳 序列. 最佳拟合映射会在字符x转换为 一个完全不同的字符y.一般而言,最好的映射 当字符在Unicode和另一个角色之间转码时发生 编码. 一根长字节序列(非最短的形式)-UTF-8允许 字符的不同表示,也很短 形式.出于安全原因,UTF-8解码器不得接受 UTF-8序列比编码字符所需的时间长.例如,字符u+000a(行 feed)必须仅以形式从UTF-8流中接受 0x0a,但在以下五个可能的五个可能中没有 表格: 0xc0 0x8a 0xe0 0x80 0x8a 0xf0 0x80 0x80
28 2023-11-06
编程技术问答社区
为什么拉丁小字母dot i,在上面的点结合不适合NFC形式的" I"?
python中的示例: >>> s = 'ı̇' >>> len(s) 2 >>> list(s) ['ı', '̇'] >>> print(", ".join(map(unicodedata.name, s))) LATIN SMALL LETTER DOTLESS I, COMBINING DOT ABOVE >>> normalized = unicodedata.normalize('NFC', s) >>> print(", ".join(map(unicodedata.name, normalized))) LATIN SMALL LETTER DOTLESS I, COMBINING DOT ABOVE 如您所见,NFC归一化不会将无点i +一个点构成正常i.有这样的理由吗?这是监督吗?还是不包括在内,因为NFC应该是NFD的完美倒数(并且不想将i分解为dotless i + dot). 解决方案 虽然NFC不是NFD的"完美逆",但这是由NFC与NFD相
26 2023-11-06
编程技术问答社区