70474


見識が浅く申し訳ないのですが、VM上でOracle Linux 7の環境を作成し、localeのLANG変更について調べています。

現在のlocaleは以下です。（変更等は行っていません）

[code]

    # localectl status
       System Locale: LANG=ja_JP.UTF-8
           VC Keymap: jp
          X11 Layout: jp,jp,jp
         X11 Variant: ,kana,Kana86
    
[/code]

しかし、これに対して使用可能なロケールを `localectl list-locales` や `locale -a` で確認しても同様の表記がありません。

[code]

    ja_JP
    ja_JP.eucjp
    ja_JP.ujis
    ja_JP.utf8
    japanese
    japanese.euc
    
[/code]

ネットサーフィンの結果ですのでリンクを提示できず申し訳ないのですが、UTF-8の設定を行う場合、「ja_JP.utf8」で記述されているものが多いように見受けられます。

これは現在の「ja_JP.UTF-8」と同一なのでしょうか？  
また、同一だとするとこの名称の紐づけ等はどこかで定義されているのでしょうか？


CC BY-SA 4.0
2020-09-17T03:02:47.697
70472
2020-09-17T04:52:54.913
2020-09-17T04:52:54.913
question
linux
Oracle Linux 7のLANGについて ja_JP.UTF-8とja_JP.utf8は同一なのでしょうか？


<https://linuxfan.info/locale-variables>  
`glibc` つまり Linux のランタイムライブラリの挙動として `LANG` 等の設定値は、そのコードページ部を

  * 英数字以外を除去
  * (英字は)小文字化

した上で処理しているとのこと。実際 `glibc` ソースを見たところ `locale/loadarchive.c` と
`intl/l10nflist.c` でそのような挙動をしています。また `intl/l10nflist.c` 中の
`_nl_normalize_codeset()` のコメントには

> There is no standard for the codeset names.  
>  Normalization allows the user to use any of the common names.

コードセット名については標準が決まっていない。正規化することで、ユーザはよく知られた名前のどれでも使うことができる。

とあります。よって質問の答えは「同一視されている」「規格は無いが慣習として上記実装となっている」でしょう。


CC BY-SA 4.0
2020-09-17T04:12:36.347
70474
2020-09-17T04:12:36.347
8589
70472
answer