

### 実現したいこと

C言語でUTF-8の文字列をバイナリから出力したいです。  
例えば「E3 81 82」が「あ」になりますので、配列「に0xE3, 0x81, 0x82, 0x00」と格納して、  
printf()関数のような何かで出力させたいです。  
実現方法を教えてください。  
もしくはUTF-8のデータからShift JISのデータに変換する方法があればそちらでも構いません。  
よろしくお願いいたします。

UTF-8のデータからShift JISのデータに変換する方法があればそちらをお願いいたします。

### 該当のソースコード

[code]

    #include <stdio.h>
    #include <inttypes.h>
    #include <wchar.h>
    
    int main()
    {
        char  moji1[] = { 0xE3, 0x81, 0x82, 0x00 };
        char  moji2[] = "あ";    //Shift JIS (82 A0)
    
        printf("%s\n", moji1);
        printf("%s\n", moji2);
    
        return 0;
    }
    
[/code]

### こちらでも

<https://teratail.com/questions/1r7gfqf1t4at0h>


CC BY-SA 4.0
2023-08-05T14:39:22.210
95861
2023-08-08T00:08:30.720
55013
question
c 文字コード
UTF-8の文字列をC言語で表示したい


文字コード変換のC言語ライブラリですと libiconv が該当するんじゃないでしょうか。

[libiconv - GNU Project - Free Software Foundation
(FSF)](https://www.gnu.org/software/libiconv/)


CC BY-SA 4.0
2023-08-05T17:29:48.440
95862
2023-08-08T00:08:30.720
2023-08-08T00:08:30.720
3060
59393
95861
answer


以下のコードで「あ」が表示されるようになります。  
この変更をした場合、shift-jisが文字化けするようになりますが。

[code]

    #include <stdio.h>
    #include <inttypes.h>
    #include <wchar.h>
    #include <stdlib.h> //←追加
    
    int main(){
        system("chcp 65001"); //←追加
        char  moji1[] = { 0xE3, 0x81, 0x82, 0x00 };
        char  moji2[] = "あ";    //Shift JIS (82 A0)
    
        printf("%s\n", moji1);
        printf("%s\n", moji2);
    
        return 0;
    }
    
[/code]


CC BY-SA 4.0
2023-08-07T21:28:47.263
95881
2023-08-08T00:07:42.883
2023-08-08T00:07:42.883
3060
32560
95861
answer