require 'iconv'
$KCODE='u'
class String
def String.safe_iconv(str_utf8)
sentan=""
koutan= str_utf8.to_s
while sentan.to_s.size < str_utf8.to_s.size
begin
return sentan = sentan.to_s + Iconv.iconv('SHIFT_JIS','UTF-8', koutan)[0]
rescue Iconv::Failure => e
sentan = sentan.to_s + e.success.to_s
koutan = e.failed.to_s.sub(/^\S/,"?")
end
end
end
end
puts String.safe_iconv("Zörkendörfer ")
上面一段代码加不加$KCODE='u'结果是不一样的。
$KCODE
Ruby の認識するマルチバイト文字列エンコーディングです。変数の値は "EUC" "SJIS" "UTF8" "NONE" のいずれかの文字列です。
ruby 认识的复合字节字符串uncoding。可以选择"EUC" "SJIS" "UTF8" "NONE中的任意一个
$KCODE の値が "EUC" のときは文字列や正規表現のエンコーディングが EUC-JP であると仮定します。同様に "SJIS" のときは Shift JIS を仮定します。 "UTF8" のときは UTF-8 を仮定します。 "NONE" のときはマルチバイト文字列を認識しません。
$KCODE的值是"EUC"的时候字符串和正则表达式解码(uncoding)采取EUC-JP方式假设
$KCODE的值是"SJIS"的时候字符串和正则表达式解码(uncoding)采取SJIS方式假设
$KCODE的值是"NONE"的时候字符串和正则表达式解码(uncoding)采取NONE方式假设
NONE的时候不能为复合字节字符串解码
另外还有个方法可以认识复合字节的字符串,用ActiveSupport里面的chars类
分享到:
相关推荐
Iconv是一个广泛使用的字符集转换工具,它允许在多种字符编码之间进行转换,包括Unicode、GBK和UTF-8。 Iconv在C/C++编程中非常常见,因为它提供了高效的字符编码转换功能。在Android NDK环境中,我们可以通过编写C...
- `-t` 后面可以跟多个目标编码,这样 `iconv` 会尝试按顺序转换,直到成功。 ### 编码转换的常见问题与解决 在编码转换过程中,可能会遇到以下问题: 1. **乱码**:当源编码和目标编码不匹配时,会出现乱码。...
在实际操作中,需要注意字节顺序问题,尤其是处理UTF-16这样的双字节编码时。同时,处理编码错误也很重要,比如遇到未知字符或编码不完整的情况,需要决定如何处理,如替换为问号或其他占位符。 在C语言中,这些...
GBK使用2字节编码,可表示20,902个汉字及部分其他符号。 3. **Unicode**:Unicode是一个国际标准,旨在为世界上所有语言提供一个统一的字符集。它有多种编码实现,如UCS-2(使用2字节)和UTF-16(使用2或4字节)。...
**编码转换工具iconv详解** 编码转换在信息技术领域中扮演着至关重要的角色,尤其是在处理不同系统、语言或网络环境下的文本数据时。标题中的“iconv.rar”是一个压缩包,包含了一个名为“iconv”的编码转换工具,...
"iconv字符编码转换的操作实例"这个标题表明我们将探讨如何使用iconv库在C++环境中进行字符编码的转换。iconv是一个广泛使用的跨平台库,用于在不同字符编码之间进行转换,例如从GBK(中国的常见编码)转换到UTF-8...
在C/C++中,实现GBK到Unicode或Unicode到GBK的转换,主要步骤包括读取编码转换表、解析输入字符串、以及进行逐字节的转换。编码转换表通常是一个二维数组,其中每个元素对应一个GBK编码和对应的Unicode编码。对于GBK...
在Windows操作系统中,进行字符编码转换时,可能会遇到与Linux或Unix系统不同的情况,因为Windows原生并不包含iconv库。然而,为了满足跨平台的编码转换需求,开发者们为Windows构建了兼容iconv功能的实现。这个工具...
Unicode编码是一种多字节编码,最常用的形式是UTF-8。UTF-8的特点是它可以表示Unicode中的任何字符,并且对ASCII字符(如英文、数字)保持向后兼容,只需一个字节。对于非ASCII字符,UTF-8使用2到4个字节来编码。 ...
由于GBK是在Unicode出现之前制定的,所以它没有完全遵循Unicode的编码规则,这就导致了在处理GBK编码和Unicode编码的文本时可能需要进行转换。 GSM中文字库则是针对手机等移动设备设计的一种字符编码,主要用于短信...
GBK 使用双字节编码,最多可以表示20,902个字符。 Unicode 与 GBK 之间的转换通常需要进行编码和解码的过程。编码是将字符转换成字节序列,解码则是将字节序列还原为字符。在 C/C++ 等编程语言中,可以使用库函数如...
iconv是知名的开源跨平台编码转换库,iconv.exe是iconv库在windows下的命令行工具,iconv.exe的一般用法:iconv.exe -f gbk -t utf-8 gbk.txt > utf-8.txt。其中 -f gbk 指明转换前的文件编码是gbk,-t utf-8 指明...
`iconv` 是一个广泛使用的命令行工具和库,它允许在不同的字符编码之间进行转换,如 ASCII、UTF-8、GBK 等。在本篇中,我们将深入探讨 `iconv` 的工作原理、使用方法以及在实际应用中的价值。 首先,让我们理解字符...
"iconv"是一个非常实用的命令行工具,它能够帮助用户在不同的字符编码之间进行转换。本篇将详细介绍`iconv`自动转码批处理工具及其使用方法。 首先,`iconv`工具源于GNU项目,它的主要功能是将文件或数据流从一种...
iconv字符集转换库是计算机编程领域中一个重要的工具,主要用于在不同的字符编码之间进行转换。这个库在处理多语言环境、数据交换以及网络通信时起着至关重要的作用。字符集,也称为字符编码,是一种将字符与数字或...
一个利用iconv函数将GBK码转为UTF-8码的函数,本函数在LINUX系统下测试正常。目前支持中文繁简、日文、英文、俄文等的转码。函数其实很简单,另外精选了一些本人觉得有助于理解ICONV函数及Unicode、GBK这些概念的...
- **特殊字符**:非ASCII字符的转换需要特别小心,特别是涉及到多字节编码时。 总之,`iconv`是一个强大的工具,能有效解决编码转换问题,但在使用时应充分理解编码原理,以确保转换的准确性和有效性。无论是在日常...
使用这样的类,开发者可以更稳定地进行编码转换操作,特别是在处理包含复杂或特殊字符的数据时。总的来说,这个编码转换类对于处理中文字符集的PHP项目来说是一个有价值的工具,能够提高代码的健壮性和兼容性。
windows版 具体用法: -f From CodePage 源编码 -t To Codepage 目标编码 -s SubDirectory 递归检索子目录 -v Verbose 显示转化日志 eg: iconv *.txt -p .\ -f gb2312 -t utf-8 -v -s