Ruby 中文编码学习笔记

简介

在 Ruby 中,使用 UTF-8 编码作为默认编码,支持处理多种语言文字,包括中文。本文介绍 Ruby 中文编码相关的知识点和实例。

字符编码

Ruby 中的字符编码可以通过 Encoding.default_internalEncoding.default_external 获取,分别代表默认的内部编码和外部编码。默认情况下,两者均为 UTF-8。

rubyCopy Code
puts Encoding.default_internal # => nil puts Encoding.default_external # => #<Encoding:UTF-8>

我们也可以手动设置编码:

rubyCopy Code
Encoding.default_internal = Encoding::UTF_8 Encoding.default_external = Encoding::GB2312

字符串编码

Ruby 中的字符串有编码属性,通过 String#encoding 获取。如果没有指定编码,则默认为 Encoding.default_internalEncoding.default_external

rubyCopy Code
str = "你好" puts str.encoding # => #<Encoding:UTF-8> str = "hello" puts str.encoding # => #<Encoding:UTF-8>

当字符串中包含不同编码的字符时,需要进行编码转换。

rubyCopy Code
# 转换为 GB2312 编码 str = "你好" str.encode!(Encoding::GB2312) puts str.encoding # => #<Encoding:GB2312>

文件编码

在读写文件时,可以指定文件的编码。读取文件时,Ruby 会自动转换为 Encoding.default_internal 的编码。

rubyCopy Code
File.open("file.txt", "r:UTF-8") do |f| puts f.read.encoding # => #<Encoding:UTF-8> end File.open("file.txt", "w:GB2312") do |f| f.write("你好") end

实例

输出中文字符

rubyCopy Code
puts "你好,世界!"

遍历文件夹中的中文文件名

rubyCopy Code
Dir.foreach("路径") do |file_name| puts file_name if file_name =~ /[^\x00-\x7F]+/ end

读取中文文本文件并打印内容

rubyCopy Code
File.open("file.txt", "r:UTF-8") do |f| puts f.read end

总结

本文介绍了 Ruby 中的字符编码、字符串编码和文件编码相关的知识点,并提供了一些实例。在使用 Ruby 处理中文时,需要注意字符编码的转换和文件编码的指定。