[英]string length display one character extra - ruby
我正在处理用户上传的 csv 文件,csv 只有一列,header 行“API”
当我处理 CSV 时,我看到其中一个文件
"API".downcase.length displays 4
可能是编码问题。 当我为我看到的字符串执行header[0].downcase.bytes
时
[239, 187, 191, 97, 112, 105]
当我做 "api".bytes 我看到
[97, 112, 105]
任何有助于理解为什么上面示例显示 4 中的“API”.downcase.length 的帮助都非常好。
我像这样解析文件
CSV.foreach(@file_path, headers: true) do |row|
谢谢。
在这种情况下,额外的字符看起来像是来自BOM (Byte Order Mark) 。 这些是隐藏字符,有时用于指示文件的编码类型。
处理 BOM 字符的一种方法是在读取文件时指定bom|utf-*
编码:
CSV.open(@file_path, "r:bom|utf-8", headers: true)
当使用bom|utf-*
时,Ruby 将检查输入文档中的 Unicode BOM 以帮助确定编码,如果找到 BOM,它将被删除 - Ruby 的IO 文档对此进行了更详细的介绍。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.