$KCODEの設定

+Sponsored Links

Rubyにおいて文字コードを指定するにはグローバル変数である「$KCODE」に文字コードを設定します。($KCODEについては『日本語と文字コード』を参照して下さい)。

Railsで内部的に処理する文字コードを設定するにはプロジェクト毎の設定ファイルに文字コードを記述します。

なお設定する文字コードとしては「Shift_Jis」や「EUC-JP」がありますが多くの参考資料でも進めている通り今後は「UTF-8」を使用していきます。これはAjaxを利用する場合に「UTF-8」を使う必要があるためです。

また今回日本語のテスト用に新しいプロジェクトとして「japan」と言うプロジェクトを作成し、またコントローラーとして「Test」と言うコントローラーを作成しておきました。

文字コードの作成

日本語のテストにはこのプロジェクトを使っていきます。

では文字コードを設定します。プロジェクトを作成した時に自動的に「config」ディレクトリが作成されます。このディレクトリの中に「environment.rb」と言うファイルが含まれています。このファイルには実行時に使用される設定を記述するファイルです。

文字コードの作成

「environment.rb」ファイルをテキストエディタで開いてみると次のようなことが記述されています。(下記は一部抜粋です)。

# Be sure to restart your web server when you modify this file.

# Uncomment below to force Rails into production mode when 
# you don't control web/app server and can't set it the proper way
# ENV['RAILS_ENV'] ||= 'production'

# Specifies gem version of Rails to use when vendor/rails is not present
RAILS_GEM_VERSION = '1.2.3' unless defined? RAILS_GEM_VERSION

# Bootstrap the Rails environment, frameworks, and default configuration
require File.join(File.dirname(__FILE__), 'boot')

Rails::Initializer.run do |config|
  # Settings in config/environments/* take precedence over those specified here

文字コードを設定する場合はこのファイルの先頭に次のように記述して下さい。

$KCODE = "UTF8"

# Be sure to restart your web server when you modify this file.

# Uncomment below to force Rails into production mode when 
# you don't control web/app server and can't set it the proper way
# ENV['RAILS_ENV'] ||= 'production'

# Specifies gem version of Rails to use when vendor/rails is not present
RAILS_GEM_VERSION = '1.2.3' unless defined? RAILS_GEM_VERSION

各文字コードと設定する値は次の通りです。

$KCODEの値文字コード
SJISShift_Jis
EUCEUC-JP
UTF8UTF-8
NONEマルチバイト文字列を認識しない

※実際には先頭の1文字目しか見ていませんので「UTF8」の代わりに「U」や「u」と書いても同じです。