ruby编码说明

news/2024/7/8 3:51:21

程序编码一般分几种情况:
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 并设置编码

 

转载于:https://www.cnblogs.com/wf0117/p/7223387.html


http://www.niftyadmin.cn/n/4054443.html

相关文章

left join注意事项

一、【问题描述】 客户表(CLT.CSM_BASEINFO)左连接证件信息表(CLT.CSM_CERTINFO),通过客户名称查询客户信息。 1)证件信息表的字段筛选条件,放到on后面,查询结果正常 SELECT clt…

JDK8给Tomcat配置https

第一步:生成秘钥库 采用JDK自带的keytool工具生成秘钥 别名 xieh1234 存储路径 D:\cas\keystore\ keytool -genkey -v -alias xieh1234 -keyalg RSA -keystore D:\cas\keystore\xieh1234.keystore -alias 表示证书的别名,一个keystore文件中可以存放多…

笔记本插拔电源黑屏一下

亲爱的朋友你是否有这样的痛苦呢?当你的笔记本插上电源,屏幕要黑一下;当你拔掉电源时屏幕还是要黑一下。下面我就以Thinkpad E550电脑,win10系统为例和大家分享一下我的解决办法。 之所以会出现如上现状,是因为电脑插上电源和拔掉电源的刷屏率设置不相同。在桌面单击"右击…

编程游戏网站

http://www.imooc.com/article/14793转载于:https://blog.51cto.com/11283249/1950174

阿里云数加合作伙伴-袋鼠云获A轮融资,成立一年半获三轮投资超亿元

创投市场再次风起。2017年7月,袋鼠云宣布,获得来自戈壁创投主投、元璟资本跟投的A轮融资,相对于当前冷淡的投资市场,此举也再次引发了行业对大数据、云计算技术创新企业的关注。据袋鼠云CEO陈吉平(花名:拖雷…

Adam:大规模分布式机器学习框架

引子 转载请注明:http://blog.csdn.net/stdcoutzyx/article/details/46676515 又是好久没写博客,记得有一次看Ng大神的訪谈录,假设每周读三篇论文,那么经年以后,必定成为对某个领域非常熟悉的人。 可惜,在忙…

arduino uno r3 静态控制四位共阳数码管(笔记)

2019独角兽企业重金招聘Python工程师标准>>> 最近在玩arduino的板子,玩到静态控制四位数码管遇到了障碍,搞了一下午才弄明白,写个笔记玩玩: 首先需要:(1)arduino uno r3 &#xff08…

Hutool工具类TreeUtil的使用(记录)

推荐一个工具网站&#xff1a;Java代码生成平台 添加依赖&#xff1a; <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.1</version> </dependency> Hutool官网 树结构工具-Tr…