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 - 轻量级文本编辑器、代替记事本的最佳选择 ...支持多种编码,包括 Unicode、UTF-8、Unix、Mac 文本 支持添加书签 自动完成 增强的NFO字符画文件 标记打开的文件中所有相同的文本
自动缩进,字自动完成,转换各种格式(ASCII,UTF-8和UTF-16)之间的字符编码,换行格式转换(在 DOS 之间(CR/LF),Unix(LF)和 Macintosh(CR)格式),多个撤销或重做,书签和基于正则表达式的查找和替换。...
开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...
开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...
开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...
1. **文本编码**:在处理文本时,理解不同的字符编码(如ASCII、Unicode和UTF-8)至关重要。它们决定了如何在计算机中存储和显示各种语言的字符。 2. **正则表达式**:在Text Playground中,用户可能会接触到正则...
Java目录监视器源程序 9个目标文件 内容索引:JAVA源码,综合应用,目录监视 用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。...
开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...
开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...
开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...
开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...
开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...
开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...
开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...
开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...
开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...
开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...