`
yawooh
  • 浏览: 15110 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

用Ruby查找替换UTF-8文件中的中文字符

阅读更多
Precondition:
1. The Source Java file is saved as UTF-8 type
2. The Source java file containts some chinese words as comments for some test data.
3. My ruby code file is saved as UTF-8 as well.

Requirement:
1. Find all the '克' in the java files under a foder, and repleace it to '可'
2. User runs the replace.rb file through command line like:
replace <dir name>

Code: replace.rb
##############################################################
dName = ARGV[0]     # Directory to process
srcStr = '克'  # srcStr = ARGV[1].dup.force_encoding('utf-8')
destStr = '可' # destStr = ARGV[2].dup.force_encoding('utf-8')
##############################################################
Dir.chdir(dName)
Dir["**/*.java"].each do |file|

  oldFileName = File.basename(file,".java") + ".org"
  File.rename(file, oldFileName)

  oldFile = File.open(oldFileName, "r")
  newFile = File.open(file, "w")

  puts "........................... #{File.basename(newFile)}"
  oldFile.each_line do |line|
    line.force_encoding('utf-8') 
    puts oldFile.lineno, line if line =~ /#{srcStr}/
    newFile.puts line.gsub(/#{srcStr}/, destStr)
  end
  
  oldFile.close
  newFile.close

end


Issue:
I'm new to Ruby. The coding style and error handling is not enough

I failed to pass the chinese words as command arguments by above code like : replace <dir name> <sourceString>, <replaceString>
Example: replace <dir name> "克" "可"
This way doesn't work.  I don't know the cause so far.

Udpaded on 26/01/2011
I found the solution:
change the source code from
srcStr = ARGV[1].dup.force_encoding('utf-8')
destStr = ARGV[2].dup.force_encoding('utf-8')

to
srcStr = ARGV[1].dup.encode('utf-8')
destStr = ARGV[2].dup.encode('utf-8')


This can make the paramemter passed and convert to UTF-8 successfully.

Good article:
http://blog.grayproductions.net/articles/ruby_19s_string

But later I tried to change the code
line.force_encoding('utf-8')

to
line.encode('utf-8')


It has error again. 
分享到:
评论

相关推荐

    Notepad2-mod 4.2.25.954 中文绿色版

    Notepad2-mod 4.2.25.954 - 轻量级文本编辑器、代替记事本的最佳选择 ...支持多种编码,包括 Unicode、UTF-8、Unix、Mac 文本 支持添加书签 自动完成 增强的NFO字符画文件 标记打开的文件中所有相同的文本

    Windows 记事本替代工具 Notepad3 5.21.227.1 + x64.zip

    自动缩进,字自动完成,转换各种格式(ASCII,UTF-8和UTF-16)之间的字符编码,换行格式转换(在 DOS 之间(CR/LF),Unix(LF)和 Macintosh(CR)格式),多个撤销或重做,书签和基于正则表达式的查找和替换。...

    java开源包1

    开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...

    java开源包10

    开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...

    java开源包8

    开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...

    text-playground

    1. **文本编码**:在处理文本时,理解不同的字符编码(如ASCII、Unicode和UTF-8)至关重要。它们决定了如何在计算机中存储和显示各种语言的字符。 2. **正则表达式**:在Text Playground中,用户可能会接触到正则...

    JAVA上百实例源码以及开源项目源代码

    Java目录监视器源程序 9个目标文件 内容索引:JAVA源码,综合应用,目录监视 用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。...

    java开源包11

    开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...

    java开源包2

    开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...

    java开源包3

    开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...

    java开源包6

    开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...

    java开源包5

    开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...

    java开源包4

    开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...

    java开源包7

    开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...

    java开源包9

    开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...

    java开源包101

    开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...

    Java资源包01

    开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...

Global site tag (gtag.js) - Google Analytics