如何用C语言将UTF-8字符写入CSV文件?

wbgh16ku  于 8个月前  发布在  其他
关注(0)|答案(1)|浏览(81)

如何在C中将UTF-8字符写入CSV文件?我想写入ŞĞİ等字母。而且我不能在不同的列中写入。我猜我的PC有问题:即使使用如此简单的代码,它也会将所有数据写入单个单元格中:

#include <stdio.h>

int main() {
    FILE *file = fopen("veriler.csv", "w");

    if (file == NULL) {
        printf("Dosya açma hatası!\n");
        return 1;
    }

    // CSV dosyasına verileri yazma
    fprintf(file, "Ad, Soyad, Yaş\n");
    fprintf(file, "John, Doe, 30\n");
    fprintf(file, "Jane, Smith, 25\n");

    fclose(file);
    printf("CSV dosyası oluşturuldu.\n");

    return 0;
}

字符串

bvpmtnay

bvpmtnay1#

你的问题中有两个独立的问题:

  • CSV文件格式有很多变体:列分隔符可以是,,正如名称 * 逗号分隔值 * 所示,或者是;,这是各个国家常用的。当您将CSV文件导入到其他工具(如Excel)时,您应该检查他们使用的列分隔符约定。
  • 用于表示非ASCII字符(如ŞĞİ)的字符编码必须在环境中涉及的各种工具之间保持一致:源代码编辑器、编译器、读取数据的文件(JSON要求使用UTF-8),操作系统配置(特别是区域设置支持)、用于查看CSV文件的工具、终端、导入CSV文件的工具(Excel...)。如果它们都使用相同的编码,例如:UTF-8应该没问题,但在Windows系统上,由于历史原因,UTF-8支持仍然不是通用的。您使用的是土耳其语言环境,可能使用8位编码,如ISO-8859-9,或Windows特定代码页857,它们与UTF-8不兼容。

对于非ASCII文本内容,现在推荐使用UTF-8(编码Unicode码位),因为相同的标准可以用于所有人类语言,因此可以被认为是通用的。
语言环境仍然决定了您的大小写中的一些特定变体,例如土耳其语特定的大小写转换:

  • i转换为İ,而不是I
  • I转换为ı,而不是i

因此,我建议您查看上面提到的所有工具的配置,并尝试选择UTF-8作为默认编码。如果这是不可能的,请尝试选择相同的编码,并在需要的地方使用翻译过滤器转换文件内容。

相关问题