ruby中in `split': invalid byte sequence in UTF-8 (ArgumentError)解决方法

#encoding=UTF-8
require "socket"
url="gid=38&sid=1&oldsid=1&user=12848525&roleid=1011730&dept=15&time=1356357372&level=40&ip=10.2.201.16&map_id=210010014&group=\xCE\xDE&sign=a04101ffd9f7fe07cba1b9f38"

arr = url.split("&")

在ruby代码中由于为了防止中文乱码问题加了#encoding=UTF-8,不过引起了另一个问题

in `split': invalid byte sequence in UTF-8 (ArgumentError),解决方法为

将arr=arr = url.split("&")修改为

arr = url.force_encoding("gb2312").split("&")  即可

### MATLAB 中处理 UTF-8 编码错误 当遇到 `Invalid byte 2 of 2-byte UTF-8 sequence` 错误时,这通常意味着读取文件或字符串的过程中遇到了不合法的 UTF-8 字节序列。为了有效解决此问题,可以采取以下几种方法: #### 方法一:设置默认字符集 确保 MATLAB 使用正确的字符编码来解释输入数据。可以通过修改系统的环境变量或直接在脚本中指定编码方式。 ```matlab % 设置默认字符集为 UTF-8 feature('DefaultCharacterSet', 'UTF-8'); ``` 这种方法适用于大多数情况下的文本处理操作[^1]。 #### 方法二:修正源文件编码 如果问题是由于外部文件引起的,则应确认该文件确实是以 UTF-8 编码保存的。如果不是,请将其转换成 UTF-8 格式再尝试加载到 MATLAB 中。 对于已知存在乱码的情况,在导入前先通过其他工具(如 Notepad++ 或 Sublime Text)打开并重新编码文件是一个不错的选择。 #### 方法三:过滤非法字节序列 有时即使指定了正确编码,仍可能碰到含有损坏字符的数据流。此时可以在读入过程中加入异常捕获机制,跳过这些有问题的部分继续执行后续逻辑。 下面给出一段简单的代码片段用于演示如何忽略无法解析的多字节字符: ```matlab fid = fopen('example.txt','r','n','utf8'); % 打开文件,采用 utf8 解码器 while ~feof(fid) try line = fgetl(fid); disp(line); % 显示每一行内容 catch ME %#ok<CTCH> warning(['Skipped invalid character at position ', num2str(ME.message)]); end end fclose(fid); ``` 这段程序会逐行读取文件,并自动绕过任何不符合 UTF-8 规范的地方而不中断整个流程[^2]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值