程序编码一般分几种情况:
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. Laravel 单元测试-模拟认证的用户

    在 Laravel 编写单元测试时经常会遇到需要模拟认证用户的时候,比如新建文章.创建订单等,那么在 Laravel unit test 中如何来实现呢? 官方解决方法 Laravel 的官方文档中的 ...

  2. 【Leetcode】【Easy】Remove Duplicates from Sorted Array

    Given a sorted array, remove the duplicates in place such that each element appear only once and ret ...

  3. mif文件C语言生成

    1:正弦波 用函数 sin (x * π/180°) /************************************************** 正弦波 mif 生成 ********** ...

  4. Oracle数据库克隆后temp文件因路径变化无法找到问题

    Oracle数据库克隆后temp文件因路径变化无法找到出现如下报错Errors in filexxxx.trc:ORA-01157: cannot identify/lock data file xx ...

  5. 插上翅膀,让Excel飞起来——xlwings(三)

    xlwings基本对象 xlwings基本对象 App相当于Excel程序,Book相当于工作簿.N个Excel程序则由apps表示,N个工作簿由books表示. 对工作簿的操作 #导入xlwings ...

  6. Xpath定位_1:子找父以及contains的用法

    先上xml代码,如下图,在写自动化脚本时,需要定位到数字为10334的td元素.td元素的父元素.父的父元素以及属性值都一样:只有同胞元素的元素值不同.以此可以通过先定位到同胞元素,在找到父元素下的期 ...

  7. MySQL联合索引最左匹配范例

    MySQL联合索引最左匹配范例 参考文章:http://blog.jobbole.com/24006/ 创建示例表. 示例表来自MySQL官方文档: https://dev.mysql.com/doc ...

  8. selenium使用js进行点击

    WebElement button = driver.findElement(By.xpath("/html/body/div[1]/div[3]/h2/div[2]")); Ja ...

  9. POJ 1681 Painter's Problem 【高斯消元 二进制枚举】

    任意门:http://poj.org/problem?id=1681 Painter's Problem Time Limit: 1000MS   Memory Limit: 10000K Total ...

  10. 【luogu P1231 教辅的组成】 题解

    题目链接:https://www.luogu.org/problemnew/show/P1231 对于每本书只能用一次,所以拆点再建边 #include <queue> #include ...