私はUbuntuで開発していて、そのコードをWindowsでも読むことがあるのですが、□や■などが文字化けするので、□なら0x25A1、■なら0x25A0(ASCIIコード変換機より)と置き換えてコードを書いたところ、terminalで出力したときに文字化けが起こります。
charは1バイトなので出力ができないから文字化けすると私は思っているのですが、%sで出力するとSegmentation faultが発生するので解決法が分からず、こちらで質問させていただくことにしました。回答よろしくお願いします。
ご指摘いただきましたが、ASCIIコードではなくUTF-8の方で、0xE296A0や0xE296A1でした。申し訳ありません。
該当のソースコード
C
1#include <stdio.h> 2 3#define STR 0x25a0 4 5int main() { 6 printf("%x\n", STR); // -> 25a0 7 printf("%d\n", STR); // -> 9632 8 printf("%c\n", STR); // -> � 9 printf("%s\n", STR); // -> (Segmentation fault) 10 return 0; 11}
試したこと
文字配列にすればいいのかと思い
char c[] = {STR}; -> コンパイルエラー
補足情報
Ubuntu 18.04.1 LTS
Windows10(学校)
Terminalの文字コード: Unicode - UTF-8
エディタの文字コード: UTF-8
回答5件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/02/07 08:19 編集
2019/02/07 08:25
2019/02/07 08:31