标签: unicode

如何从字符串中间执行对文化敏感的"启动"操作?

我有一个相对模糊的要求,但感觉应该可以使用BCL.

对于上下文,我正在Noda Time中解析日期/时间字符串.我为输入字符串中的位置维护一个逻辑光标.因此,虽然完整的字符串可能是"2013年1月3日",但逻辑光标可能位于"J".

现在,我需要解析月份名称,将其与文化的所有已知月份名称进行比较:

  • 文化敏感
  • 不区分大小写
  • 只是从光标的角度来看(不是更晚;我想看看光标是否"看着"候选月份名称)
  • 很快
  • ......之后我需要知道使用了多少个字符

当前的代码做这个工作通常使用CompareInfo.Compare.它实际上是这样的(仅用于匹配部分 - 在真实的东西中有更多的代码,但它与匹配无关):

internal bool MatchCaseInsensitive(string candidate, CompareInfo compareInfo)
{
    return compareInfo.Compare(text, position, candidate.Length,
                               candidate, 0, candidate.Length, 
                               CompareOptions.IgnoreCase) == 0;
}
Run Code Online (Sandbox Code Playgroud)

但是,这取决于候选人和我们比较的区域长度相同.大部分时间都很好,但在某些特殊情况下并不好.假设我们有类似的东西:

// U+00E9 is a single code point for e-acute
var text = "x b\u00e9d y";
int position = 2;
// e followed by U+0301 still means e-acute, but from two code points
var candidate = "be\u0301d";
Run Code Online (Sandbox Code Playgroud)

现在我的比较会失败.我可以用IsPrefix: …

.net string unicode

105
推荐指数
3
解决办法
5856
查看次数

如何防止Unicode字符在JavaScript中从HTML呈现为表情符号?

我正在从FileFormat.Info的搜索中找到特殊字符的Unicode .

某些字符呈现为经典的黑白字形,例如⚠(警告标志\u26A0⚠).这些是首选,因为我可以将CSS样式(如颜色)应用于它们.

警告标志符号的图像

其他人正在渲染为更新的卡通表情符号,例如hour(沙漏,\u231B⌛).这些不是优选的,因为我不能完全定型它们.

沙漏表情符号的图像

看来浏览器正在进行此更改,因为我能够在Mac Firefox上看到沙漏字形,而不是Mac Chrome或Mac Safari.

有没有办法强制浏览器显示旧的(单调单调)版本?

更新:看来(从下面的评论)有一个文本显示选择,FE0E,可用来执行文本VS-表情符号.选择器作为后缀连接到字符的代码上,没有空格,例如⌛︎HTML十六进制或\u231B\uFE0EJS.但是,它并没有被所有浏览器(例如Chrome和Edge)所尊重.

html javascript css unicode emoji

105
推荐指数
5
解决办法
4万
查看次数

如何从Perl输出UTF-8?

我正在尝试使用"utf8"编译指示编写Perl脚本,并且我得到了意想不到的结果.我正在使用Mac OS X 10.5(Leopard),我正在使用TextMate进行编辑.我的编辑器和操作系统的所有设置都默认为以utf-8格式写入文件.

但是,当我在文本文件中输入以下内容时,将其保存为".pl"并执行它,我得到友好的"带问号的菱形"代替非ASCII字符.

#!/usr/bin/env perl -w

use strict;
use utf8;

my $str = 'Çirçös';
print( "$str\n" );
Run Code Online (Sandbox Code Playgroud)

知道我做错了什么吗?我希望在输出中得到"Çirçös",但我得到' ir s'.

unicode perl utf-8

104
推荐指数
3
解决办法
12万
查看次数

C++中的Unicode处理

在C++中进行Unicode处理的最佳实践是什么?

c++ unicode

103
推荐指数
4
解决办法
4万
查看次数

UTF-8"可变宽度编码"如何工作?

unicode标准中有足够的代码点,你需要4个字节来存储它们.这就是UTF-32编码所做的.然而,UTF-8编码通过使用称为"可变宽度编码"的东西以某种方式将这些压缩到更小的空间.

实际上,它设法在一个字节中代表US-ASCII的前127个字符,它看起来与真正的ASCII完全相同,因此您可以将许多ascii文本解释为UTF-8而不对其执行任何操作.干净的把戏.那么它是怎样工作的?

我将在这里提出并回答我自己的问题,因为我只是做了一些阅读以弄清楚它并且我认为它可能会节省其他人一些时间.如果我有一些错误,也许有人可以纠正我.

unicode utf-8 character-encoding multibyte

103
推荐指数
2
解决办法
2万
查看次数

UnicodeDecodeError:'ascii'编解码器无法解码位置1的字节0xef

我在尝试将字符串编码为UTF-8时遇到了一些问题.我尝试过很多东西,包括使用string.encode('utf-8')unicode(string),但是我得到了错误:

UnicodeDecodeError:'ascii'编解码器无法解码位置1的字节0xef:序数不在范围内(128)

这是我的字符串:

(?????)?
Run Code Online (Sandbox Code Playgroud)

我不知道出了什么问题,任何想法?

编辑:问题是打印字符串不正确显示.此外,当我尝试转换它时出现此错误:

Python 2.7.1+ (r271:86832, Apr 11 2011, 18:13:53)
[GCC 4.5.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> s = '(\xef\xbd\xa1\xef\xbd\xa5\xcf\x89\xef\xbd\xa5\xef\xbd\xa1)\xef\xbe\x89'
>>> s1 = s.decode('utf-8')
>>> print s1
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode characters in position 1-5: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)

python unicode utf-8

103
推荐指数
6
解决办法
31万
查看次数

在Python 2.6中使用unicode_literals的任何陷阱?

我们已经在Python 2.6下运行了我们的代码库.为了准备Python 3.0,我们开始添加:

from __future__ import unicode_literals

进入我们的.py文件(因为我们修改它们).我想知道是否还有其他人这样做并遇到任何非显而易见的陷阱(也许是在花了很多时间调试之后).

python unicode python-2.6 unicode-literals

102
推荐指数
5
解决办法
2万
查看次数

使用awk删除字节顺序标记

awk用于删除BOM的脚本(可能是单线程)怎么样?

规格:

  • 在第一个(NR > 1)之后打印每一行
  • 对于第一行:如果以#FE #FF或开头#FF #FE,则删除它们并打印其余部分

unicode awk byte-order-mark

102
推荐指数
4
解决办法
8万
查看次数

实际使用中最常见的非BMP Unicode字符是什么?

根据您的经验,到目前为止,哪些Unicode字符,代码点,BMP(基本多语言平面)之外的范围是最常见的?这些是需要UTF-8中的4个字节或UTF-16中的代理项.

我希望答案是在名称中使用的中文和日文字符,但不包括在最广泛的CJK多字节字符集中,但在我最常用的项目上,英文维基词典,我们发现哥特字母是到目前为止更为常见.

UPDATE

我写了几个软件工具来扫描整个维基百科上的非BMP字符,我惊讶地发现,即使在日语维基百科中,哥特字母也是最常见的.在中文维基百科中也是如此,但它也有许多中文字符被使用多达50或70次,包括"",""和"".

unicode codepoint cjk surrogate-pairs astral-plane

101
推荐指数
3
解决办法
2万
查看次数

CSS:如何在元素内容之前添加空格?

以下代码均不起作用:

p:before { content: " "; }
p:before { content: "&nbsp;"; }
Run Code Online (Sandbox Code Playgroud)

如何在元素内容之前添加空格?

注意:我需要为border-left和margin-left上色以进行语义使用,并将空格用作无色边距.:)

css unicode space css-content

101
推荐指数
4
解决办法
11万
查看次数