Ruby中进行UTF-8编码检测的方法是String#unpack方法,传入 "U*" 模板。这个模板的意思是把字符串当成一个UTF-8串,分别把每一个Unicode字符转换成对应的代码点并组合为数组。字符串本身确实是UTF-8,则能够转换成功,否则将抛出异常。根据这种行为,给String添加如下实例方法:
class String
def utf8?
unpack('U*') rescue return false
true
end
end
以上程序在大部分情况下确实正确。但是我发现GB2312编码中,下列汉字的GB2312编码能够通过上面方法的检测,而被误认为是UTF-8串:
位、前、支、校、写、元
可能还有一些。因此,上述方法不适宜用来对可能包含GB2312编码的中文字串进行UTF-8编码检测。
注意这不是Ruby的问题,而是不同编码模式导致的本质难题。 可以做以下实验: 1. 打开notepad,写入一个‘位’字,不回车,直接以ANSI编码保存(注意必须用ANSI编码保存)。 2. 再次打开这个文件,你会看到显示出来的不是“位”字,而是λ。 同样,“前、支、校、写、元” 等单字也存在类似现象。 可见字符串编码检测并不容易。不知有没有什么可靠的方法(除了用Iconv库直试转以外),望知者不吝赐教。
分享到:
相关推荐
精彩编程与编程技巧-VB修改注册表一特例 ...
br-real-exceptions 这些异常表达了巴西哈维罗斯的真实感受。 [概括] DeuRuimException :是的! 是RuntimeException,还是您认为有人将要在做某事时让您知道? BadCtrlC_CtrolV_Exception :我们很好地开始了:...
本文的目的是介绍大小偏向的Lindley分布,这是加权分布的特例。 加权分布在密度函数中出现某些类型的偏差(即概率与变量的大小成正比)时具有实际意义,这就是为什么建议的大小偏差Lindley版本针对此类情况设计得更...
【18】支持带UTF-8标记/不带UTF-8标记的文件 每个步骤都说得很详细了,就没有必要贴图了,体积不要太大才好。 【1】正则表达式应用——替换指定内容到行尾 原始文本如下面两行 abc aaaaa 123 abc 444 希望每次...
【18】支持带UTF-8标记/不带UTF-8标记的文件 每个步骤都说得很详细了,就没有必要贴图了,体积不要太大才好。 【1】正则表达式应用——替换指定内容到行尾 原始文本如下面两行 abc aaaaa 123 abc 444 希望每次...
2022年高中数学解题技巧-选择题、填空题(特例法含例题分析)推荐.pdf
这个神经网络模型包括时滞Hopfield神经网络,时滞Cellular神经网络,时滞Cohen-Grossberg神经网络作为特例。基于微分不等式技术,利用Brouwer不动点定理并构造合适的Lyapunov函数,得到了保证递归神经网络的平衡点...
在文献[5]提出单向S-模糊集的基础上,给出映射单向S-粗模糊集概念,映射诱导的等价关系的概念;...得出单向S-粗模糊集是映射单向S-粗模糊集的特例,映射单向S-粗模糊集是粗集理论的一个新的研究方向。
将TLS、LMS和约束反Hebbian自学习算法统一起来,指出LMS算法和约束反Hebbian自学习算法是两个特例。研究了TLS自适应学习方法在谐波检测中的应用,并将这种方法推广到三相系统中。所研究的检测方法同时适用于单相和三...
构建了概率近似空间上的双向迁移PS-粗糙集模型,讨论了PS-粗糙集的性质及相关定理,证明了PS-粗糙集是S-粗糙集和Z.Pawlak粗糙集的进一步扩展,S-粗糙集和Z.Pawlak粗糙集是PS-粗糙集的特例。与S-粗糙集相比,PS-粗糙...
所提出的FO-PLL包含一个可调的分数阶次r,因此与传统锁相环(PLL)相比,该FO-PLL具有一个额外的自由度,传统PLL也可以看成是FO-PLL的一个特例。通过选择合适的分数阶次r,能够获得更好的转子位置和速度观测性能。...
随机模拟中模型不确定性的影响研究,葛慧,顾巍巍,本文依据岳城水库汛期日流量过程资料,分别建立了反映洪水随机变化特性的线性自回归模型和解集模型。应用统计试验的方法初步研究
1、题目描述 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。 2、代码详解 先说结论: 特例:底数为0且指数为负,抛异常“0不能求...# -*- coding:utf-8 -*- class Solution: def Pow
研究了问题空间为k 2时的一个特例:即在任一时刻点都同时有两个服务需求提出.给出了此特例的工作函数策略,进行了相应的策略分析并给出了竞争比的证明.关于成对及多需求k 服务器问题的一般情形的策略设计及理论证明...
利用函数双向S-粗集的结构,给出函数迁移的信度特征,函数集Q的下近似信度特征,函数集Q的上近似...函数双向S-粗集的结构是函数双向S-粗集的随机结构的特例,函数双向S-粗集的随机结构是函数双向S-粗集结构的一般形式。
/** * 创建chart * * @return */ public JFreeChart createChart(String Ytitle, String title, CategoryDataset lineData, CategoryDataset barData) { //参考附件 ...--end 维优特例 -->
高中生物第1章遗传因子的发现素养提升课自交、自由交配和分离定律特例教案新人教版必修2-新人.pdf
它们都是Newton-Cotes方法的特例。 在这项研究中,我们通过多项式回归模型来近似Lorenz曲线,并整合最佳回归模型以对基尼系数进行数值估计。 尝试在理论Lorenz曲线和具有已知基尼指数的经验Lorenz曲线上进行检查。 ...