如何用C将utf-8字符写入csv文件?

问题描述 投票:0回答:1

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

Ş
Ğ
İ
等字母。我也不能写在不同的栏目中。我猜我的电脑有问题:即使使用如此简单的代码,它也会将所有数据写入一个单元格中:

#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;
}
c excel csv utf-8 printf
1个回答
0
投票

您的问题中有 2 个单独的问题:

  • 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 作为默认编码。如果这是不可能的,请尝试尽可能选择相同的编码,并在需要时使用翻译过滤器转换文件内容。

© www.soinside.com 2019 - 2024. All rights reserved.