繁体   English   中英

字符串长度额外显示一个字符 - ruby

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM