程序编码一般分几种情况:
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. SQL Server ->> 在SQL Server中创建ASSEMBLY

    首先要把数据库的TRUSTWORTHY属性改为ON ALTER DATABASE [MYDB] SET TRUSTWORTHY ON GO 接下来直接创建ASSEMBLY应该就没问题了.但是往往有可能 ...

  2. SpringMVC方法接收参数可以为空、默认值设置

  3. mysql 5.7版本如何修改密码

    这是官方截图,mysql5.7安装后,会有一个默认密码,保存在mysql.log里面,找的他,并更改 官方文档地址 https://dev.mysql.com/doc/refman/5.7/en/li ...

  4. 【面试虐菜】—— 常用SQL语句

    创建表 create table emp( id decimal, name ), age decimal) 删除表 DROP TABLE EMP 插入默认值 CREATE TABLE EMP( Id ...

  5. 如何将一个PDF文件里的图片批量导出

    假设我有下面这个PDF文件,里面有很多图片,我想把这些图片批量导出,而不是在Adobe Acrobat Reader里一张张手动拷贝: 本文介绍一种快捷做法. 用PDF-XChange Editor打 ...

  6. HDU-3092 Least common multiple---数论+分组背包

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3092 题目大意: 有一个数字n,现在要把它分解成几个数字相加!然后这几个数字有最小公倍数,题目目的是 ...

  7. What is Thread

    A thread is a fundamental unit of CPU utilization –a thread ID –a program counter –a register set –a ...

  8. HDU 2082 普通型母函数

    分析: 组成单词好说,价值如何体现? 改变指数就行,例如: 这样,组成的单词,指数就是权值,多项式相乘,指数小于50的就OK: #include <bits/stdc++.h> using ...

  9. 2016 ACM/ICPC亚洲区大连站 F - Detachment 【维护前缀积、前缀和、二分搜索优化】

    F - Detachment In a highly developed alien society, the habitats are almost infinite dimensional spa ...

  10. POJ 2155 Matrix【二维树状数组+YY(区间计数)】

    题目链接:http://poj.org/problem?id=2155 Matrix Time Limit: 3000MS   Memory Limit: 65536K Total Submissio ...