日本語ロケールに ja_JP.SJIS を使うように設定する方法をまとめました。
LinuxのデフォルトのロケールはUTF-8に設定されています。それに対して、Windows Server 2019, 2022などのWindowsOSはデフォルトのロケールがUTF-8ではなくShift-jisに設定されています。
本記事では、Linuxのロケールの設定をWindowsと同じShift-jisにする方法をまとめました。
現在OSに設定されているロケールを確認する
まずはOSに設定されているロケールを確認します。
# localectl status
こちらの環境で確認したところ以下の状態でした。
[root@RHEL95 ~]# localectl status
System Locale: LANG=ja_JP.UTF-8
VC Keymap: jp
X11 Layout: jp
上記の確認結果ではUTF-8になっています。
現在のユーザーに設定されているロケールを確認する
以下のコマンドで現在のユーザーに設定されているロケールを確認します。
# locale
[root@RHEL95 ~]# locale
LANG=ja_JP.UTF-8
LC_CTYPE="ja_JP.UTF-8"
LC_NUMERIC="ja_JP.UTF-8"
LC_TIME="ja_JP.UTF-8"
LC_COLLATE="ja_JP.UTF-8"
LC_MONETARY="ja_JP.UTF-8"
LC_MESSAGES="ja_JP.UTF-8"
LC_PAPER="ja_JP.UTF-8"
LC_NAME="ja_JP.UTF-8"
LC_ADDRESS="ja_JP.UTF-8"
LC_TELEPHONE="ja_JP.UTF-8"
LC_MEASUREMENT="ja_JP.UTF-8"
LC_IDENTIFICATION="ja_JP.UTF-8"
LC_ALL=
RHEL9.5のデフォルトはUTF-8です。※RHEL9.5での確認結果です。
設定可能なロケールを確認する
SHIFT_JISはRHEL9インストール時点でデフォルトで設定できるロケールにはなっていません。
[root@RHEL95 ~]# locale -a | grep sjis
[root@RHEL95 ~]#
Red Hatの記事を参考にSHIFT_JISをOSに設定する
以下のRed Hatの公式サイトの記事を参考にSHIFT_JISをOSに設定していきます。

必要なrpmパッケージのインストール
RHEL9では以下のコマンドを実行してglibc-locale-sourceとその依存関係にあるrpmパッケージをインストールします。
# yum install glibc-locale-source
[root@RHEL95 ~]# yum install glibc-locale-source
サブスクリプション管理リポジトリーを更新しています。
メタデータの期限切れの最終確認: 1:25:34 前の 2025年04月29日 13時31分14秒 に実施しました。
依存関係が解決しました。
=======================================================================================================================================================
パッケージ アーキテクチャー バージョン リポジトリー サイズ
=======================================================================================================================================================
インストール:
glibc-locale-source x86_64 2.34-125.el9_5.8 rhel-9-for-x86_64-appstream-rpms 4.1 M
アップグレード:
glibc x86_64 2.34-125.el9_5.8 rhel-9-for-x86_64-baseos-rpms 2.0 M
glibc-all-langpacks x86_64 2.34-125.el9_5.8 rhel-9-for-x86_64-baseos-rpms 18 M
glibc-common x86_64 2.34-125.el9_5.8 rhel-9-for-x86_64-baseos-rpms 298 k
glibc-gconv-extra x86_64 2.34-125.el9_5.8 rhel-9-for-x86_64-baseos-rpms 1.7 M
glibc-langpack-ja x86_64 2.34-125.el9_5.8 rhel-9-for-x86_64-baseos-rpms 325 k
トランザクションの概要
=======================================================================================================================================================
インストール 1 パッケージ
アップグレード 5 パッケージ
ダウンロードサイズの合計: 26 M
これでよろしいですか? [y/N]: y
パッケージのダウンロード:
(1/6): glibc-2.34-125.el9_5.8.x86_64.rpm 1.1 MB/s | 2.0 MB 00:01
(2/6): glibc-locale-source-2.34-125.el9_5.8.x86_64.rpm 1.9 MB/s | 4.1 MB 00:02
(3/6): glibc-common-2.34-125.el9_5.8.x86_64.rpm 821 kB/s | 298 kB 00:00
(4/6): glibc-langpack-ja-2.34-125.el9_5.8.x86_64.rpm 747 kB/s | 325 kB 00:00
(5/6): glibc-gconv-extra-2.34-125.el9_5.8.x86_64.rpm 2.4 MB/s | 1.7 MB 00:00
(6/6): glibc-all-langpacks-2.34-125.el9_5.8.x86_64.rpm 3.0 MB/s | 18 MB 00:05
-------------------------------------------------------------------------------------------------------------------------------------------------------
合計 4.5 MB/s | 26 MB 00:05
トランザクションを確認しています
トランザクションの確認に成功しました。
トランザクションをテストしています
トランザクションのテストに成功しました。
トランザクションを実行しています
準備中 : 1/1
アップグレード中 : glibc-all-langpacks-2.34-125.el9_5.8.x86_64 1/11
アップグレード中 : glibc-common-2.34-125.el9_5.8.x86_64 2/11
アップグレード中 : glibc-gconv-extra-2.34-125.el9_5.8.x86_64 3/11
scriptletの実行中: glibc-gconv-extra-2.34-125.el9_5.8.x86_64 3/11
アップグレード中 : glibc-langpack-ja-2.34-125.el9_5.8.x86_64 4/11
scriptletの実行中: glibc-2.34-125.el9_5.8.x86_64 5/11
アップグレード中 : glibc-2.34-125.el9_5.8.x86_64 5/11
scriptletの実行中: glibc-2.34-125.el9_5.8.x86_64 5/11
インストール中 : glibc-locale-source-2.34-125.el9_5.8.x86_64 6/11
整理 : glibc-all-langpacks-2.34-125.el9_5.1.x86_64 7/11
整理 : glibc-gconv-extra-2.34-125.el9_5.1.x86_64 8/11
scriptletの実行中: glibc-gconv-extra-2.34-125.el9_5.1.x86_64 8/11
整理 : glibc-common-2.34-125.el9_5.1.x86_64 9/11
整理 : glibc-langpack-ja-2.34-125.el9_5.1.x86_64 10/11
整理 : glibc-2.34-125.el9_5.1.x86_64 11/11
scriptletの実行中: glibc-all-langpacks-2.34-125.el9_5.8.x86_64 11/11
scriptletの実行中: glibc-2.34-125.el9_5.1.x86_64 11/11
検証中 : glibc-locale-source-2.34-125.el9_5.8.x86_64 1/11
検証中 : glibc-2.34-125.el9_5.8.x86_64 2/11
検証中 : glibc-2.34-125.el9_5.1.x86_64 3/11
検証中 : glibc-all-langpacks-2.34-125.el9_5.8.x86_64 4/11
検証中 : glibc-all-langpacks-2.34-125.el9_5.1.x86_64 5/11
検証中 : glibc-common-2.34-125.el9_5.8.x86_64 6/11
検証中 : glibc-common-2.34-125.el9_5.1.x86_64 7/11
検証中 : glibc-gconv-extra-2.34-125.el9_5.8.x86_64 8/11
検証中 : glibc-gconv-extra-2.34-125.el9_5.1.x86_64 9/11
検証中 : glibc-langpack-ja-2.34-125.el9_5.8.x86_64 10/11
検証中 : glibc-langpack-ja-2.34-125.el9_5.1.x86_64 11/11
インストール済みの製品が更新されています。
アップグレード済み:
glibc-2.34-125.el9_5.8.x86_64 glibc-all-langpacks-2.34-125.el9_5.8.x86_64 glibc-common-2.34-125.el9_5.8.x86_64
glibc-gconv-extra-2.34-125.el9_5.8.x86_64 glibc-langpack-ja-2.34-125.el9_5.8.x86_64
インストール済み:
glibc-locale-source-2.34-125.el9_5.8.x86_64
完了しました!
インストールしたら再起動します。(exitして接続しなおすだけでも問題ないかもしれません)
# shutdown -r now
文字をマッピングする
以下のコマンドを実行して文字をマッピングします。
# localedef -f SHIFT_JIS -i ja_JP ja_JP.SJIS --no-archive
上記のコマンドを –no-archiveオプションなしで実行するだけだと、特定のコマンド実行時にrpmパッケージの更新によってロケールの設定が上書きされてしまうので–no-archiveオプションを付けます。
--no-archive
オプションを使用せずにインストールすると、アーカイブ/usr/lib/locale/locale-archive
に新しいロケールが追加されます。
以下のアップデートによってロケールの設定情報が上書きされることを防ぐために--no-archive
オプション使用します。
# yum update
もしくは
# yum update glibc glibc-common nscd

実際に実行してみます。
[root@RHEL95 ~]# localedef -f SHIFT_JIS -i ja_JP ja_JP.SJIS --no-archive
[warning] character map `SHIFT_JIS' is not ASCII compatible, locale not ISO C compliant [--no-warnings=ascii]
[root@RHEL95 ~]#
注意書きが出たため、以下のオプションもつけて実行します。
--no-warnings=ascii
[root@RHEL95 ~]# localedef -f SHIFT_JIS -i ja_JP ja_JP.SJIS --no-archive --no-warnings=ascii
[root@RHEL95 ~]#
問題なく実行できました。
ロケールを設定する
以下のコマンドで現在使用しているユーザーのロケールを変更します。このコマンドは一時的なものなので永続化させていきます。
# LANG=ja_JP.SJIS
/etc/sysconfig/i18nファイルに以下の内容を記載して再起動してもGUIのロケールが変わらないようにします。
本ファイルはRHEL9ではGUIにのみ影響があります。
GUI では、/etc/sysconfig/i18n で設定された LANG になります。

/etc/sysconfig/i18n
LANG=ja_JP.SJIS
SUPPORTED=en_US.UTF-8:en_US:en:ja_JP.eucJP:ja_JP:ja:ja_JP.SJIS:ja
SYSFONT=lat0-sun16
SYSFONTACM=8859-15
ところで、最近のLinuxでは、このファイルがダミーになっており、ロケールの設定は「/etc/locale.conf」に行うようになっている、またロケール設定は「localectl」というツールを利用することになっているという場合があるので、注意してください。

システム全体のロケールを以下のコマンドで設定します。
localectl set-locale LANG=ja_JP.SJIS
[root@RHEL95 ~]# cat /etc/locale.conf
LANG=ja_JP.SJIS
RHEL7とRHEL8についての記載にはなっていますが、上記のコマンドで設定できる設定は/etc/locale.confに保存されます。

以下はRHEL9のドキュメントです。
システム全体にわたるロケール設定は
/etc/locale.conf
ファイルに保存され、システム起動の初期段階でsystemd
デーモンにより読み込まれます。/etc/locale.conf
に設定したロケール設定は、個別のプログラムやユーザーが上書きしない限り、すべてのサービスやユーザーに継承されます。
現在のロケールを確認する
以下のコマンドで現在のユーザーのロケールを確認します。
# locale
[root@RHEL95 ~]# locale
LANG=ja_JP.SJIS
LC_CTYPE="ja_JP.SJIS"
LC_NUMERIC="ja_JP.SJIS"
LC_TIME="ja_JP.SJIS"
LC_COLLATE="ja_JP.SJIS"
LC_MONETARY="ja_JP.SJIS"
LC_MESSAGES="ja_JP.SJIS"
LC_PAPER="ja_JP.SJIS"
LC_NAME="ja_JP.SJIS"
LC_ADDRESS="ja_JP.SJIS"
LC_TELEPHONE="ja_JP.SJIS"
LC_MEASUREMENT="ja_JP.SJIS"
LC_IDENTIFICATION="ja_JP.SJIS"
LC_ALL=
以下のコマンドでシステム全体に設定されているロケールの情報を確認します。
# localectl status
[root@RHEL95 ~]# localectl status
System Locale: LANG=ja_JP.SJIS
VC Keymap: jp
X11 Layout: jp
問題なくSHIFT_JISに設定できました。