Tag: unicode

UTF-8,UTF-16和UTF-32

UTF-8,UTF-16和UTF-32之间有什么区别? 我明白,他们将全部存储Unicode,并且每个使用不同数量的字节来表示一个字符。 select一个在另一个之上有好处吗?

为什么2+ 40等于42?

当一位同事向我展示了这一行的JavaScript警报时,我感到莫名其妙。 alert(2+ 40); 很快就会发现,看起来像一个负号的实际上是一个具有明显不同语义的神秘Unicode字符。 这让我想知道为什么这个字符在parsingexpression式时不会产生语法错误。 我也想知道是否有更多的人物像这样的行为。

为什么表情符号像👩👩👧👦在Swift中被如此奇怪地对待?

字符👩👩👧👦(有两个女人,一个女孩和一个男孩的家庭)编码如下: U+1F469 WOMAN , ‍U+200D ZWJ , U+1F469 WOMAN , U+200D ZWJ , U+1F467 GIRL , U+200D ZWJ , U+1F466 BOY 所以这是非常有趣的编码; unit testing的完美目标。 不过,Swift似乎并不知道如何对待它。 这是我的意思: "👩‍👩‍👧‍👦".contains("👩‍👩‍👧‍👦") // true "👩‍👩‍👧‍👦".contains("👩") // false "👩‍👩‍👧‍👦".contains("\u{200D}") // false "👩‍👩‍👧‍👦".contains("👧") // false "👩‍👩‍👧‍👦".contains("👦") // true 所以,斯威夫特说,它包含自己(好)和一个男孩(好!)。 但是,它说它不包含一个女人,女孩,或零宽度木匠。 这里发生了什么事? 为什么Swift知道它包含一个男孩,但不是一个女人或女孩? 我能理解它是否把它当作一个单一的字符,只承认它包含它自己,但是它只有一个子组件,而没有其他的组件让我感到困惑。 如果我使用"👩".characters.first!等东西,这不会改变"👩".characters.first! 。 更令人困惑的是这样的: let manual = "\u{1F469}\u{200D}\u{1F469}\u{200D}\u{1F467}\u{200D}\u{1F466}" Array(manual.characters) // […]

为什么现代Perl默认避免使用UTF-8?

我想知道为什么使用Perl构build的大多数现代解决scheme默认情况下都不启用UTF-8 。 我知道核心Perl脚本有很多遗留问题,它们可能会破坏一些东西。 但是从我的观点来看,在21世纪,大的新项目(或者大视angular的项目)应该从头开始对其软件进行UTF-8validation。 我仍然没有看到它发生。 例如, 穆斯启用严格和警告,但不是Unicode 。 Modern :: Perl也减less了样板,但没有UTF-8处理。 为什么? 在2011年的现代Perl项目中是否有避免使用UTF-8的理由? 评论@ tchrist太长了,所以我在这里添加它。 我似乎没有说清楚。 让我尝试添加一些东西。 tchrist和我看到的情况差不多,但是我们的结论是完全相反的。 我同意,Unicode的情况是复杂的,但这就是为什么我们(Perl用户和编码器)需要一些使得UTF-8处理像现在一样容易的层(或杂注)。 特里斯特指出了很多方面,我会在几天甚至几周的时间里阅读和思考它们。 不过,这不是我的观点。 tchrist试图certificate没有一个单一的方式“启用UTF-8”。 我没有那么多的知识来解决这个问题。 所以,我坚持活的例子。 我玩Rakudo和UTF-8只是在那里, 因为我需要 。 我没有任何问题,只是工作。 也许有更深的一些限制,但在开始时,我所testing的所有工作正如我所料。 这不应该成为现代Perl 5的目标吗? 我强调一下:我并不是build议使用UTF-8作为核心Perl的默认字符集,我build议可以为那些开发新项目的人简单地触发它。 另一个例子,但用更负面的语气。 框架应该使开发更容易。 几年前,我尝试了一些网页框架,但只是把它们扔掉了,因为“启用UTF-8”是如此晦涩难懂。 我没有find如何以及在哪里挂钩的Unicode支持。 这是非常耗时的,我发现更容易走老路。 现在我在这里看到了与Mason 2相同的问题: 如何使Mason2 UTF-8变得干净? 。 所以,这是一个相当新的框架,但是使用它与UTF-8需要深入的内部知识。 它就像一个大红色的标志:停下来,不要使用我! 我真的很喜欢Perl。 但处理Unicode是痛苦的。 我仍然发现自己跑在墙上。 某种方式tchrist是正确的,并且回答我的问题:新项目不吸引UTF-8,因为它在Perl 5中太复杂了。

在Delphi 2009中将TMemoryStream转换为“String”

在Delphi 2009之前我们有以下代码: <span style="font: 10pt Courier New;"><span class="pas1-reservedword">function</span><span class="pas1-space"> </span><span class="pas1-identifier">MemoryStreamToString(M:</span><span class="pas1-space"> </span><span class="pas1-identifier">TMemoryStream):</span><span class="pas1-space"> </span><span class="pas1-reservedword">String</span><span class="pas1-symbol">; </span><span class="pas1-reservedword">var </span><span class="pas1-space"> </span><span class="pas1-identifier">NewCapacity:</span><span class="pas1-space"> </span><span class="pas1-identifier">Longint; </span><span class="pas1-reservedword">begin </span><span class="pas1-space"> </span><span class="pas1-reservedword">if</span><span class="pas1-space"> </span><span class="pas1-symbol">(M.Size</span><span class="pas1-space"> </span><span class="pas1-symbol">=</span><span class="pas1-space"> </span><span class="pas1-number">0)</span><span class="pas1-space"> </span><span class="pas1-reservedword">or</span><span class="pas1-space"> </span><span class="pas1-symbol">(M.Memory</span><span class="pas1-space"> </span><span class="pas1-symbol">=</span><span class="pas1-space"> </span><span class="pas1-reservedword">nil</span><span class="pas1-symbol">)</span><span […]

什么因素使得PHP的Unicode不兼容?

我能够在脚本中使用UTF-8字符。 事实上,可以使variables和函数的名称包含Unicode字符 。 还有处理多字节string的mb_string扩展 ,但是在无数文章中,PHP被批评为缺乏Unicode支持。 我不明白 为什么PHP说不支持Unicode?

如何将unichar值转换为Objective-C中的NSString?

我有一个国际字符存储在unicharvariables。 这个字符不是来自文件或url。 variables本身只存储一个UTF-8格式的unsigned short(0xce91),并转换为希腊大写字母“A”。 我试图把这个字符放入一个NSStringvariables,但是我失败了。 我已经尝试了两种不同的方式,但都不成功: unichar greekAlpha = 0xce91; //could have written greekAlpha = 'Α' instead. NSString *theString = [NSString stringWithFormat:@"Greek Alpha: %C", greekAlpha]; 不好。 我有一些奇怪的汉字。 作为一个旁注,这与英文字符完美的作品。 然后我也试过这个: NSString *byteString = [[NSString alloc] initWithBytes:&greekAlpha length:sizeof(unichar) encoding:NSUTF8StringEncoding]; 但是这也行不通。 我显然在做一些非常错误的事情,但我不知道是什么。 有人可以帮我吗? 谢谢!

UnicodeEncodeError:'ascii'编解码器不能以特殊名称编码字符

我的Python(版本2.7)脚本运行良好从本地html文件获得一些公司名称,但是当涉及到一些特定的国家名称,它给出了这个错误“UnicodeEncodeError:”ascii“编解码器不能编码字符” 当这个公司名字来临的时候特别会出错 公司名称: KühlfixKälteanlagenIng.Gerhard Doczekal&Co. KG 该链接无法处理 Traceback (most recent call last): File "C:\Python27\Process2.py", line 261, in <module> flog.write("\nCompany Name: "+str(pCompanyName)) UnicodeEncodeError: 'ascii' codec can't encode character u'\xfc' in position 9: ordinal not in range(128) 错误在这行代码中给出: if companyAlreadyKnown == 0: for hit in soup2.findAll("h1"): print "Company Name: "+hit.text pCompanyName = hit.text flog.write("\nCompany Name: "+str(pCompanyName)) companyObj.setCompanyName(pCompanyName)

Windows上MBCS和UTF-8的区别

我正在阅读有关Windows上的字符集和编码。 我注意到在Visual Studio编译器(用于C ++)中有两个名为MBCS和UNICODE的编译器标志。 他们有什么区别? 我没有得到的是UTF-8如何在概念上与MBCS编码不同? 另外,我在MSDN中find下面的引用: Unicode是一个16位字符编码 这就否定了我所读到的有关Unicode的内容。 我以为unicode可以编码不同的编码,如UTF-8和UTF-16。 有人可以更多地了解这种混乱吗?

如何比较“看起来相似”的Unicode字符?

我陷入了一个令人惊讶的问题。 我在我的应用程序中加载了一个文本文件,我有一些比较μ值的逻辑。 而且我意识到,即使文本相同,比较值也是错误的。 Console.WriteLine("μ".Equals("µ")); // returns false Console.WriteLine("µ".Equals("µ")); // return true 在后面的行中,字符μ被复制粘贴。 但是,这些可能不是唯一的字符。 在C#中有什么方法来比较看起来相同但实际上不同的字符?