ruby編碼說明

2021-06-14 12:12:39 字數 1128 閱讀 3920

程式編碼一般分幾種情況:

1、原始碼檔案編碼

2、接收外部內容的編碼

3、執行環境編碼

4、作業系統編碼

首先原始碼檔案的編碼,可以通過在ruby檔案的頭部新增一行申明即可,這樣所有在原始碼裡面出現的字元都儲存為指定的編碼:

# -*- coding:utf-8 -*-

接收的內容或讀取外部檔案時,可能不確定是什麼編碼,這個時候就可以對外部接收的字元或內容進行轉碼。

string.encode('utf-8')   #把字串轉成utf-8模式

require "nkf"

string= nkf.nkf("-w", string) ##同樣把字串轉成utf-8,其值-w引數代表utf-8

執行環境的編碼,通常預設和作業系統的編碼是一致的,但是也可以設定為指定的編碼,這樣保持所有編碼一致性。ruby中設定執行環境編碼方式如下,即啟動ruby時新增encoding引數並指定編碼格式。

ruby --encoding=utf-8

作業系統編碼,通常中文的都是gbk的;所以如果在程式裡用到系統中的取值時用到中文的地方需要注意;比如:中文名字的目錄;如果你的執行環境是utf-8的,讀取中文目錄下的檔案時,需要把路徑字串轉碼成gbk再去讀,否則會報錯。

在這裡有乙個問題:

ruby x:/path/to/ruby/中文/file.rb #可以成功找到rb檔案,此時執行環境編碼為gbk

ruby --encoding=utf-8 x:/path/to/ruby/中文/file.rb #不能找到rb檔案,提示編碼錯誤,因為此時執行環境編碼為utf-8,而傳遞過去的路徑引數為gbk編碼。

而如果執行環境為gbk時,而原始碼為utf-8編碼,則在有些地方處理中文等字串時會提示編碼不相容,因為有些時候字元編碼處理的預設編碼就是執行環境的編碼。

ruby x:/path/to/ruby/english/file.rb  #可以找到,執行環境同原始碼設定編碼

所以執行環境的編碼應該有如下優先順序:是否有encoding引數指定==>第一次處理非中文時的字元編碼格式

Ruby中文編碼問題

在做乙個 後台的時候,碰到乙個很是煩人的問題,後台導航選單放在模版頁中 sadfasdf gs剩me link to 1 admin games path 2 link to list admin items path link to new new admin item path flash no...

ruby中的 Proc block說明

存放 片斷 proc可以將要執行的一些 片斷放在一起,卻不立即執行,而是在後來我們想要執行它的時候來呼叫。ruby say hello proc.new 不會立即執行 say hello.call 現在我們來呼叫執行proc的存放的 hello 用proc來組織我們的 proc是組織 的好工具,比如...

PHP編碼規範說明

1 編碼規範說明 必須有乙個良好的編碼規範。1.一定要有注釋 2.一定要有統一的命名規範 檔名,主要是類檔案,類名.class.php,如 mysql.class.php 如果不是類,則不加 class 類名 方法名 屬性名 類名使用 大駝峰式 單詞首字母大寫 如goodscontroller,對應...