pepc回答ポイント 200ptウォッチ

C言語のプログラムでsetlocaleの使い方がわかりません。


以前はUNIX環境で日本語を正しく表示するには次のことをしなければならなりませんでした。

- 環境変数LANGやLC_ALLなどの設定
- ターミナルソフトの言語設定

今となってはUTF8一択のような感じですが、この時代SJISで作ったプログラムをロケールがEUCのシェルで正しく表示するようなやり方があったのでしょうか?
結局、iconvなどを利用して文字コード変換をする必要があったのでしょうか。

私が調べた限りでは次の通りでした。

- setlocaleは通貨や、時間表記に非常に影響を与える。
- POSIXの定義( http://pubs.opengroup.org/onlinepubs/007908799/xbd/envvar.html )によるとisalphaなどの関数がsetlocaleの影響を受ける。
- → printfなども影響を受けるが、単なるバイトの列である文字コードの変換は行ってくれなさそう・・・(実験済み)
- 文字列を直でprintfしてもダメだが、メッセージカタログや、gettextなどには影響がありそう
- ELFなどの実行バイナリフォーマット文字列に関する文字コード情報はない

わかりづらい場合はその旨コメントで書き込んでいただければと思います。直していきたいと思います。

※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。
ログインして回答する

ベストアンサー

その他の回答

この質問へのコメント

コメントはありません

この質問への反応(ブックマークコメント)

質問の情報

登録日時
2017-04-03 06:04:59
終了日時
2017-04-10 06:05:05
回答条件
1人1回まで

この質問のカテゴリ

この質問に含まれるキーワード

UNIX467C言語303EUC191環境変数93SJIS223ロケール13POSIX12文字コード574関数2326通貨216gettext17シェル239プログラム5048ターミナル277バイナリ210

人気の質問

メニュー

PC版