程序编码一般分几种情况:
1、源码文件编码
2、接收外部内容的编码
3、运行环境编码
4、操作系统编码

首先源码文件的编码,可以通过在ruby文件的头部添加一行申明即可,这样所有在源码里面出现的字符都保存为指定的编码:

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

  

接收的内容或读取外部文件时,可能不确定是什么编码,这个时候就可以对外部接收的字符或内容进行转码。

string.encode('utf-8')   #把字符串转成utf-8模式
string.force_encoding('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参数指定==>第一次处理非中文时的字符编码格式

rubymine输出窗口显示乱码:

ctrl shift +a 搜encoding 并设置编码

ruby编码说明的更多相关文章

  1. Ruby编码

    目录 背景字符串可以使用不同的编码编码转换编码强制不同编码的字符串相加后是啥结果?一直没使用过的\u和\x使用Sublime开发Ruby时,输出到控制台的字符串为啥不能使用多种编码?备注 背景返回目录 ...

  2. 3-22 Ruby 编码规则(个人整理)

    编码规则 https://github.com/thoughtbot/guides/tree/master/style/ruby *Use a trailing comma after each it ...

  3. Ruby:字符集和编码学习总结

    背景 Ruby直到1.9版本才很好的支持了多字节编码,本文简单总结了今天学习的关于Ruby编码方面的知识. 字符串可以使用不同的编码 在.NET中字符串的编码是一致的,Ruby允许字符串有不同的编码, ...

  4. 雷林鹏分享:Ruby JSON

    Ruby JSON 本章节我们将为大家介绍如何使用 Ruby 语言来编码和解码 JSON 对象. 环境配置 在使用 Ruby 编码或解码 JSON 数据前,我们需要先安装 Ruby JSON 模块.在 ...

  5. Unix 下 使用 RVM 管理 Ruby 和 gem

    转载:http://www.ibm.com/developerworks/cn/aix/library/au-aix-manage-ruby/   尽管 Internet Relay Chat.论坛和 ...

  6. RubyMine 2017.3.2破解教程

    下载地址:http://www.3322.cc/soft/35519.html RubyMine 2017.3.2破解版是一款专为Ruby和Rails开发者准备的IDE(被誉为最智能的Ruby和Rai ...

  7. HBase-1.2.1和Phoenix-4.7.0分布式安装指南

    目录 目录 1 1. 前言 2 2. 概念 2 2.1. Region name 2 3. 约定 2 4. 相关端口 3 5. 下载HBase 3 6. 安装步骤 3 6.1. 修改conf/regi ...

  8. webstorm中sass编译时目录或内容包含中文字符报错

    ruby版本:ruby 2.3.1p112 (2016-04-26 revision 54768) [x64-mingw32] sass版本:Sass 3.4.22 (Selective Steve) ...

  9. 在Hadoop-3.1.2上安装HBase-2.2.1

    目录 目录 1 1. 前言 3 2. 缩略语 3 3. 安装规划 3 3.1. 用户规划 3 3.2. 目录规划 4 4. 相关端口 4 5. 下载安装包 4 6. 修改配置文件 5 6.1. 修改策 ...

随机推荐

  1. siebel 界面搭建

    Siebel界面的初步搭建都是基于Siebel Tools工具来创建的,其搭建步骤: 1. 首先先创建一个Project项目,点击project--->点 new Record--->输入 ...

  2. 常见WEB开发安全漏洞 原因分析及解决

    目 录 1 会话标识未更新 3 1.1 原因 3 1.2 解决 3 2 SQL注入 3 2.1 原因 3 2.2 解决 5 3 XSS跨站脚本编制 5 3.1 原因 5 3.2 解决 5 4 XSRF ...

  3. OFFICE_EXCEL_Combine text from two or more cells into one cell.

    Excel   Enter and format data   Layout   Combine text from two or more cells into one cell Combine t ...

  4. OFBiz部署与运行

    下载及部署命令:http://ofbiz.apache.org/download.html OFBiz的安装部署是基于ant的,官网的案例是执行load-demo任务和start任务.以下分析是以12 ...

  5. centos下安装lnmp各个版本的几种方法

    首先我们用一种yum的方法安装,我们需要rpm源 默认的版本太低了,手动安装有一些麻烦,想采用Yum安装的可以使用下面的方案: 1.检查当前安装的PHP包 yum list installed | g ...

  6. ThinkPHP5专题

    TinkPHP5中 1. model中select()后的查询结果是对象而不是数组 2. model中 假如有 $result=$this->field($fields)->where($ ...

  7. C语言 指向函数的指针

    #include <stdio.h> int sum(int a, int b) { int c = a + b; printf("%d + %d = %d\n", a ...

  8. 【BZOJ3495】PA2010 Riddle

    题目大意 有\(n\)个城镇被分成了\(k\)个郡,有\(m\)条连接城镇的无向边.要求给每个郡选择一个城镇作为首都,满足每条边至少有一个端点是首都. 题目分析 每条边至少有一个端点是首都,每个郡至多 ...

  9. 【luogu P3377 左偏树(可并堆)】 模板

    题目连接:https://www.luogu.org/problemnew/show/P3377 #include <cstdio> #include <cstring> #i ...

  10. 【luogu P1972 [SDOI2009]HH的项链】 题解

    题目链接:https://www.luogu.org/problemnew/show/P1972 真是不懂为什么要卡莫队! #include <cmath> #include <cs ...