簡體   English   中英

轉換特殊字符(UTF-8)

[英]Convert special characters(UTF-8)

我正在嘗試使用#include <iconv.h>轉換字符à,但我收到垃圾......

這是代碼

#include <stdio.h>
#include <string.h>
#include <iconv.h>
#include <iostream>

int main()
{
    char *gbk_str = "àèì asdsa sd aä";
    char dest_str[100];
    char *out = dest_str;
    size_t inbytes = strlen(gbk_str);
    size_t outbytes = sizeof dest_str;
    iconv_t conv = iconv_open("ISO8859-1", "UTF-8");

    if (conv == (iconv_t)-1) {
        std::cout <<"iconv_open";
        return 1;
    }

    if (iconv(conv, &gbk_str, &inbytes, &out, &outbytes) == (size_t)-1) {
        std::cout << "iconv";
        return 1;
    }

    dest_str[sizeof dest_str - outbytes] = 0;
    puts(dest_str);
    return 0;
}

回來:
意大利語字符:POLS 6000 Impianto riduzione d。 速度

字節編碼:50 4f 4c 53 20 36 30 30 30 20 49 6d 70 69 61 6e 74 6f 20 72 69 64 75 7a 69 6f 6e 65 20 64 2e 20 76 65 6c 6f 63 69 74 c3 a0

轉換:POLS 6000 Impianto riduzione d。 速度 -> POLS 6000 Impianto riduzione d。 速度340

您必須將終端字符編碼設置為 ISO8859-1。 在我的 Linux 的 Mate 終端中,它是:

終端>>設置字符編碼>>中歐(WINDOWS-1250)

然后我能夠從您的程序中看到正確的 output 。 如果沒有這個變化,它確實是一個垃圾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM