标签: non-ascii-characters

Web标准字体中的Unicode支持

我需要决定是否在Web GUI中渲染几何符号(例如按钮,菜单等的箭头和三角形)作为Unicode符号(更容易和颜色无关)或GIF/PNG文件(我想要很多麻烦)避免).

但是,我看到客户端无法显示甚至声明为unicode字符的高级标点符号(示例).

有没有人知道OSs/Service Packs/Applications上的哪个版本附带了Unicode版本的标准字体?例如,微软的Arial unicode自1999年开始随Office一起提供,但是我没有安装办公室,而且我的Arial至少还有一些Unicode范围.

另外,Mac OS和Linux的情况如何?

有人能指出我有关这方面的一些综合资源 - 报告,清单,概述吗?

html windows unicode macos non-ascii-characters

7
推荐指数
1
解决办法
5390
查看次数

找到非Ascii字符

可能重复:
如何grep UNIX中的非ASCII字符

我正在努力寻找一个如何在一个非常大的xml数据文件中找到非ascii字符的答案.我不想转换非ascii字符,我只想确定字符所在的数据文件中的位置,以便我可以通知源删除该值.非ascii数据(似乎是单个字符)导致我的处理程序失败.不幸的是,错误数据无法帮助我确定有问题的字符在文件中的位置.此XML数据文件包含数据记录,很可能位于描述字段或名称字段中.

我曾尝试使用文本工具,但它是一个如此庞大的文件(> 32MB)的文本,它是压倒性的.有没有办法在像PSPad或TextPad这样的工具中运行REGEX来查找7-BIT ASCII字符集之外的任何字符?

non-ascii-characters

7
推荐指数
0
解决办法
3万
查看次数

在jQuery中突出显示带有(和没有)重音字符/变音符号的单词

我正在使用jquery.highlight插件:http://code.google.com/p/gce-empire/source/browse/trunk/jquery.highlight.js? r = 2

我用它来突出显示搜索结果.

问题是,如果我搜索"café"这样的东西,它就不会突出显示任何单词.

如果我搜索"咖啡馆",即使我的结果包含"咖啡馆""咖啡馆",它也只会突出"咖啡馆".

因此,我需要突出显示所有单词的"版本",无论是否有变音符号.

那可能吗?

jquery highlight diacritics non-ascii-characters

7
推荐指数
1
解决办法
3429
查看次数

haskell:输出非ascii字符

我想在WinGHCi中输出非ascii字符,但这是我得到的:

Prelude> "?"
"\948"
Prelude> putStr "\948"
*** Exception: <stdout>: hPutChar: invalid argument (character is not in the code page)
Run Code Online (Sandbox Code Playgroud)

我在Windows XP上使用WinGHCi 7.0.3.我有什么办法让WinGHCi打印出一个漂亮的小三角洲?

windows haskell non-ascii-characters

7
推荐指数
1
解决办法
1412
查看次数

具有8位ASCII数据的LINQ到实体

我有一个有趣的问题,处理LINQ到实体中的8位"ASCII"字符,我希望有人可以给我一个提示.

我继承了一个SQL Server 2000数据库,它有一些伪加密列,它们只是对字符串进行异或0xFF.不知道为什么,我知道它是蹩脚的,但那就是我们现在所处的位置.

这些列是SQL数据类型char(7)char(14).使用XOR时,0xFF在每种情况下都会设置第8位,因此最终会得到非ASCII(通过Microsoft的定义)字符.似乎在这里指出了UTF-8,但是解码变得混乱了.

我能够读取和解码这些字符串如下:

  1. 使用LINQ作为一个领域String.
  2. 获得byte[]使用System.Text.Encoding.GetEncoding(1252).GetBytes()
  3. 通过对每个字节进行异或来解码 0xFF
  4. 返回解码后的字符串 System.Text.Encoding.GetEncoding(1252).GetString()

这非常有效.

我遇到的问题是我似乎无法使用LINQ将ENCODED字符串放回SQL Server.

我基本上遵循相反的过程并且正在做:

  1. 获取字节使用ASCIIEncoding.GetBytes().(此处不需要CodePage 1252,因为这是一个直字符串.)
  2. 使用编码字节0xFF.
  3. 返回编码的字符串GetEncoding(1252).GetString().

如果我看看我的字符串,这正是我所期待的.但是,如果我在我的实体中填充并SaveChanges()在SQL Server中执行结果值总是"?????"有一定的长度.

我确定我在这里遗漏了一些东西,但我已经尝试了所有我能想到的东西,却无法得到它.现在我只是回到了使用a SqlCommand和使用编码字符串进行UPDATE 的老式方法SqlParameters.没问题,每次都有效.

在此先感谢您的任何帮助.


更新:

我尝试了JamieSee的建议,我甚至没有用他的方法得到很好的解码.我有:

    static void Main(string[] args)
    {
        Encoding characterEncoding = Encoding.GetEncoding(28591);

        HCBPWEBEntities ent = new HCBPWEBEntities();

        var encUser =
            (from users in ent.tblEmployer
            where users.ipkEmpId == 357
            select …
Run Code Online (Sandbox Code Playgroud)

linq entity-framework utf-8 codepages non-ascii-characters

7
推荐指数
1
解决办法
579
查看次数

如何在Python中使用正则表达式匹配重音字符?

除了Python,我需要这个问题的解决方案!我已经尝试为Python安装regex库,因为显然可以在Python的正则表达式中使用POSIX表达式,但是我猜它在[:alpha:]类中不包含Unicode字符.例如:

>>> re.search(r'[[:alpha:] ]+','Please work blåbær and NOW stop 123').group(0)
'Please work bl'
Run Code Online (Sandbox Code Playgroud)

当我希望它匹配 Please work blåbær and NOW stop

编辑:我使用的是Python 2.7

编辑2:我尝试了以下内容:

>>> re.search(re.compile('[\w ]+', re.UNICODE),'Please work blåbær and NOW stop 123').group(0)
'Please work bl\xc3'
Run Code Online (Sandbox Code Playgroud)

不是我想要的(我想在第一个非ASCII字符之后匹配部分),但至少它在字符上比以前更匹配.我应该在这做什么才能让它与我想要的其他东西相匹配?

编辑3:我不想匹配任何非"单词"字符; "word"是指az,AZ,space和单词字符的任何重音变体.我希望我得到了我的想法; 在一个短语中

lets match força, but stop before that comma
Run Code Online (Sandbox Code Playgroud)

我想只匹配 lets match força

编辑4:所以我尝试将Python 3用于这个脚本:

>>> re.search(re.compile('[\w ]+', re.UNICODE),'lets match força, but stop before that comma').group(0)
'lets match força'
Run Code Online (Sandbox Code Playgroud)

我猜它在Python 3中大部分都有用,除了它还匹配数字(我绝对不想要)和下划线.有什么方法可以解决这个问题,在Python …

python regex unicode non-ascii-characters

7
推荐指数
1
解决办法
5255
查看次数

URL中的非ASCII字符

我遇到了一个我以前从未见过的新问题:我的客户端正在将文件添加到我们构建的项目中,并且一些文件名中包含特殊字符,因为有些字是西班牙语.

例如,我正在测试的文件中有一个á.我在css文件中将该图像称为背景图像,但在Safari中它不显示.但它确实在FF和Chrome上.

作为测试,我将链接粘贴到浏览器和同样的事情.适用于FF和Chrome,但Safari会抛出错误.所以语言字符是我猜的吗?

Firefox转换以下网址并将á更改为%CC%81并加载图像.

http://www.themediacouncil.com/test/nonascii/LA-MAR_Cebiche -Clássico_foto -恩里克-庇隆,470x120-1371827671.jpg

你可以看到它突破......但FF和Chrome将其转换为:http: //www.themediacouncil.com/test/nonascii/LA-MAR_Cebiche-Cla%CC%81ssico_foto-Henrique-Peron-470x120-1371827671.jpg

你也可以在这里看到这个:http://jsfiddle.net/Md4gZ/2/

.testbox { width:340px; height:100px; background:url('http://www.themediacouncil.com/test/nonascii/LA-MAR_Cebiche-Clássico_foto-Henrique-Peron-470x120-1371827671.jpg') no-repeat top left; }

所以最正确的方法来解决这个问题.我正在开发PHP和WORDPRESS.我宁愿不必告诉客户回去并用特殊字符替换所有文件.

任何帮助表示赞赏.谢谢!

url special-characters non-ascii-characters

7
推荐指数
1
解决办法
5324
查看次数

比较两个字符串并忽略(但不替换)重音符号.PHP

我得到(例如)两个字符串:

$a = "joao";
$b = "joão";

if ( strtoupper($a) == strtoupper($b)) {
    echo $b;
}
Run Code Online (Sandbox Code Playgroud)

我希望即使重音也是如此.但是我需要它忽略重音而不是替换因为我需要它来回应"joão"而不是"joao".

我见过的所有答案都将"ã"替换为"a"而不是将比较设为真.我一直在阅读关于它的正常化,但我也无法使其正常工作.有任何想法吗?谢谢.

php string non-ascii-characters

7
推荐指数
2
解决办法
5612
查看次数

澄清重音字符与非二进制排序规则相等的潜在问题

对于有国际支持的网站,我在大多数表格和列中使用utf8mb4字符集和utf8mb4_unicode_ci排序规则.性能不是最重要的,各种语言的准确排序很重要.

我理解utf8mb4_general_ci和utf8mb4_unicode_ci排序规则如何与重音字符进行比较,即:

SELECT column FROM table WHERE column='abad';
Run Code Online (Sandbox Code Playgroud)

将返回'abad'和'abád'

在研究MySQL中的utf8支持时,我遇到了非二进制utf8___校对的假设问题.http://mzsanford.com/blog/mysql-and-unicode/上的页面描述了在某些更新中未保存更改的问题.他说'在更新记录时,似乎MySQL(或至少InnoDB)在更新记录之前检查是否相等.由于整数版本认为只有重音更改是相同的,因此MySQL会跳过写入(这会节省I/O开销)并返回成功,因为它认为它优化了写入而不是失败."

我将其解释为:如果您尝试更新仅在字段的重音符号中进行更改的记录,则它将无法正确更新(因为MySQL认为它已经匹配).但我无法复制这个.我创建了一个简单的测试用例:

CREATE DATABASE test_utf8 
    CHARACTER SET utf8mb4 
    COLLATE utf8mb4_unicode_ci;

USE test_utf8;

CREATE TABLE test (
    id MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT, 
    text VARCHAR(300) NOT NULL, 
    PRIMARY KEY (id)
) ENGINE = INNODB;

INSERT INTO test (text) VALUES ('abád');

UPDATE test SET text='abad' WHERE id=1;
Run Code Online (Sandbox Code Playgroud)

但是,这会正确更新值(尽管只有一个字符的重音更改).这可能只是旧版MySQL中的一个问题吗?或者这个问题是否会在略有不同的情况下出现?


如果你有时间阅读我关于这个主题的一些概念的一些说明,看看我是否有任何误解,我也将不胜感激.如果它没有错误,也许它对某人来说是有用的信息.

MySQL的utf8字符集不提供真正的utf8支持,因为字符只有1-3个字节.要获得真正的utf8支持,您可能需要使用utf8mb4.

一般来说,utf8mb4_unicode_ci在语言适当的排序方面会更准确,但与使用utf8mb4_general_ci相比,会有轻微的性能损失.

如果某些列不需要排序,并且将使用比较/相等检查,则应使用utf8mb4_bin,因为它会稍快一些.

在utf8mb4_general_ci和utf8mb4_unicode_ci排序规则中,重音字符被视为相等.因此,对于必须具有唯一值(例如主键)的列,这是一个错误的排序规则选择.在这种情况下,应该使用utf8mb4_bin.如果一个字段需要具有唯一性的重音感知,但也需要在某个时候进行语言排序,它可以存储为utf8mb4_bin,并且您可以在排序时在查询中使用collat​​e子句.例如:

SELECT column FROM table ORDER BY column COLLATE utf8mb4_unicode_ci;
Run Code Online (Sandbox Code Playgroud)

这将导致排序语言排序,尽管其内部存储在二进制排序规则中.这将影响性能,因为字段的整理决定了它的索引方式.查询的性能差异类似于对未索引列与索引列进行排序时的性能差异.

默认情况下,utf8mb4_unicode_ci或utf8mb4_general_ci排序规则下的搜索不会重音,因此搜索'abad'会返回'abad'和'abád'.因此,如果您需要重音感知搜索,则必须将列的排序规则设置为utf8mb4_binary(如果所有搜索都是重音敏感的)或在查询中使用collat​​e子句(如果您希望大多数搜索都是重音盲).由于utf8mb4_bin排序规则区分大小写,因此如果您需要不区分大小写但需要重音的搜索,则还需要修改查询.例如(假设您的搜索词已经在服务器端脚本语言中变成小写):

(Assuming the data is stored with a …
Run Code Online (Sandbox Code Playgroud)

mysql collation non-ascii-characters

6
推荐指数
1
解决办法
1478
查看次数

如何在文件中找到不可打印的字符?

我试图在unix中的数据文件中找出不可打印的字符.代码:

#!/bin/ksh
export SRCFILE='/data/temp1.dat'
while read line 
do
len=lenght($line)
for( $i = 0; $i < $len; $i++ ) {

        if( ord(substr($line, $i, 1)) > 127 )
        {
            print "$line\n";
            last;
        }
done < $SRCFILE
Run Code Online (Sandbox Code Playgroud)

代码无效,请帮我解决上述问题.

grep file find non-ascii-characters

6
推荐指数
2
解决办法
8998
查看次数