ubuntu打开csv文件中文乱码怎么办

第一步、检查文件格式

 file -i filename

或者

file --mime-encoding filename

这将输出文件的编码格式。例如:

filename: text/plain; charset=iso-8859-1

这里 iso-8859-1 就是我的文件的编码格式。

第二步、利用iconv 转换编码

假设我的名为input.txt 的文件,其编码经过第一步的检查,格式为 ISO-8859-1,我希望将其转换为UTF-8 编码,并输出到 output.txt。一般到这里就应该可以看到正常的中文字符了,但是如果仍然存在乱码,则需要第三步。

iconv -f ISO-8859-1 -t UTF-8 input.txt -o output.txt

参数解释:

  • -f ISO-8859-1:指定输入文件 input.csv 的字符编码是 ISO-8859-1。
  • -t UTF-8:指定输出文件的字符编码为 UTF-8。
  • input.txt:要转换的输入文件。
  • -ooutput.txt:指定转换后的文件输出到 output.txt。

第三步、如果仍然乱码,利用chardet 检测文件实际编码

如果经过后iconv转换后中文仍然乱码,可能的原因是文件实际上不是iso-8859-1编码的,或者原始文件在 ISO-8859-1 编码下就已经出现了乱码。这里我们尝试使用 chardet 工具来检测文件的实际编码。
(1)安装chatdet

sudo apt-get install python3-chardet

(2)检测文件编码:

chardet input.txt

输出将显示文件的编码和置信度。例如:

input.txt: GB2312 with confidence 0.99

(3)继续利用iconv 进行文件类型的转化。

iconv -f GB2312 -t UTF-8 input.txt -o output.txt

再打开output.txt,就可以看到正常的中文字符了。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要将CSV文件转换为PCD文件,需要进行以下步骤: 1. 首先,确保已安装PCL(Point Cloud Library)软件包。在终端中执行以下命令安装PCL: ``` sudo apt-get install pcl-tools ``` 2. 将CSV文件保存为文本文件,以便在终端中进行处理。可以使用文本编辑器打开CSV文件,然后将其另存为文本文件。 3. 打开终端并导航到保存的文本文件所在目录。 4. 运行以下命令将CSV文件转换为PCD文件: ``` csv2pcd input.csv output.pcd ``` 其中,`input.csv`是保存的CSV文件名称,`output.pcd`是要生成的PCD文件的名称。 5. 执行命令后,PCD文件将在同一目录下生成。 请注意,转换过程中可能需要根据CSV文件的格式和内容进行一些额外的处理或调整。在使用PCL进行点云转换时,确保CSV文件正确格式化和包含所需的数据字段。 ### 回答2: 在Ubuntu 18.04中将CSV文件转换成PCD文件,即将逗号分隔值(CSV)格式的点云数据转换为点云数据(PCD)格式,可以按照以下步骤进行操作: 1. 首先,你需要安装PCL(Point Cloud Library)库,它是用于处理点云数据的通用库。在终端中运行以下命令安装PCL: ``` sudo apt-get install libpcl-dev ``` 2. 确保你的CSV文件以逗号分隔,并且每行代表一个点的坐标。例如,一个CSV文件可能看起来像这样: ``` x,y,z 1.0,2.0,3.0 4.0,5.0,6.0 ... ``` 3. 创建一个新的文本文件,将其命名为`csv2pcd.cpp`。将以下代码复制粘贴到文件中: ```cpp #include <iostream> #include <chrono> #include <pcl/io/pcd_io.h> #include <pcl/point_types.h> int main (int argc, char** argv) { // 读取CSV文件的路径 std::string csvFile = "path_to_your_csv_file.csv"; // 将CSV文件转换为PCD文件的路径 std::string pcdFile = "path_to_save_pcd_file.pcd"; pcl::PointCloud<pcl::PointXYZ> cloud; std::ifstream file(csvFile); if (!file.is_open()) { PCL_ERROR ("Could not open file '%s'!\n", csvFile.c_str ()); return -1; } std::string line; while (std::getline (file, line)) { if (line[0] == '#') continue; pcl::PointXYZ point; std::istringstream iss(line); std::string token; int i = 0; while (std::getline (iss, token, ',')) { if (i == 0) point.x = std::stof(token); else if (i == 1) point.y = std::stof(token); else if (i == 2) point.z = std::stof(token); i++; } cloud.push_back(point); } cloud.width = cloud.size (); cloud.height = 1; cloud.is_dense = true; pcl::io::savePCDFileBinaryCompressed(pcdFile, cloud); std::cout << "Successfully converted CSV to PCD!" << std::endl; return 0; } ``` 4. 替换代码中的`csvFile`为你的CSV文件的路径,将`pcdFile`替换为你想要保存转换后PCD文件的路径。 5. 保存并关闭`csv2pcd.cpp`文件。 6. 在终端中进入包含`csv2pcd.cpp`文件的目录,并通过以下命令编译源代码: ``` g++ csv2pcd.cpp -o csv2pcd -l pcl_io ``` 7. 运行以下命令将CSV文件转换为PCD文件: ``` ./csv2pcd ``` 8. 当程序运行完毕后,你将在指定的PCD文件路径中找到转换后的PCD文件。 这是将CSV文件转换成PCD文件的基本步骤。请根据你的CSV文件路径和保存PCD文件路径进行相应的修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值