![读取包含西班牙语字符的 csv 文件](https://linux22.com/image/339163/%E8%AF%BB%E5%8F%96%E5%8C%85%E5%90%AB%E8%A5%BF%E7%8F%AD%E7%89%99%E8%AF%AD%E5%AD%97%E7%AC%A6%E7%9A%84%20csv%20%E6%96%87%E4%BB%B6.png)
我是乳胶的新手,我正在尝试为我的论文制作一些表格。
经过几次尝试后,我已经能够导入一些具有所需格式的 CSV 表,但现在我对内容感到很为难。
让我给你介绍一下代码的工作原理。我根据以下代码创建了我的解决方案:此主题。
这产生了令我非常满意的结果:
我面临的问题是,每当单元格包含一些特定的西班牙语字符时,例如:í,á,ó,... Latex 在编译时会触发错误,当我再次重新编译时,它会接受该顺序,但会生成一个数据不完整的表格。
看看当我将第一张图片中的随机单词中的“a”改为“á”时会发生什么。
我要导入的表格(我需要导入很多表格 :P)肯定会包含这些字符,我不知道该怎么办。我已强制将 CSV 文件编码为 Unicode(UTF-8),所以我不明白为什么我会遇到这些字符的问题。
任何关于如何修复此问题或简化我用于生成表格的代码的建议都将非常感谢。
非常感谢您付出的时间和耐心!
编辑以添加工作示例
在此示例中,如果我们仅创建第一个表,则一切正常。如果我们尝试创建第二个表,则会引发编译错误,如果您尝试再次编译它,它会生成一个在更改的字段上缺少行和字符的表。更改的字段位于 exampleTable3.csv 的单元格 [1, 0] & [2, 1] & [3, 2] 上
\documentclass[11pt,twoside,a4paper]{book}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{geometry}
\geometry{
a4paper,
total={140mm,217mm},
left=35mm,
top=40mm,
}
\usepackage{longtable, array, booktabs}
\usepackage{csvsimple}
\begin{filecontents*}{exampleTable2.csv}
Name;Description;Format;Restrictions
Private;textext;boolean;optional
Gender;some more field;string;optional
Names;field;[array of String];restriction
Facts;field;[array of Facts];optional
\end{filecontents*}
\begin{filecontents*}{exampleTable3.csv}
Name;Description;Format;Restrictions
Prívate;textext;boolean;optional
Gender;some mòore field;string;optional
Names;field;[arrày of String];restriction
Facts;field;[array of Facts];optional
\end{filecontents*}
\begin{document}
%printing table 2, NO SPANISH SPECIAL characters
\csvautobooklongtable[
separator=semicolon
]
{exampleTable2.csv}
%printing table 3, YES SPANISH SPECIAL characters
\csvautobooklongtable[
separator=semicolon
]
{exampleTable3.csv}
\end{document}
添加上述代码结果的图像
新编辑:仅在本地添加示例
我一直在用我自己的示例进行实验,但仍然无法使其工作。在下图中,我展示了使用的源文件、图像底部的源文件编码以及每个表的结果。
看起来这应该可以工作,所以我不太清楚为什么它不行。这里不涉及输入文件的编码,只是都在同一个源中。
再次感谢您的帮助和意见!
答案1
您看到的问题是由于 CSV 文件和源文件的编码不同造成的。这些编码问题可能以各种方式出现,软件很难可靠地检测文件的编码。
我能够通过以下方式重现该问题:我使用latin1
编码保存了最小文档(但保留inputenc
选项为utf8
)。然后文件产生如下错误:
./csvsimple-latin1.tex:42: Package inputenc Error: Unicode char íva (U+E4)
(inputenc) not set up for use with LaTeX.
不幸的是,许多编辑器会忽略错误并生成输出文件,这使得问题的诊断变得更加困难。
因此,主要问题是确保 CSV 文件和源文档使用相同的编码,并且该编码确实是正确的。我使用 Mac 版 Excel 的经验是,它实际上无法正确生成 UTF8 CSV 文件。我不知道这是否是 Windows 版 Excel 的问题。不过,您报告使用 Google 文档中的 CSV 文件可以正常工作,这并不奇怪,因为它们似乎是有效的 UTF8。