Issue Details (XML | Word | Printable)

Key: GROOVY-1945
Type: Bug Bug
Status: Closed Closed
Resolution: Fixed
Priority: Major Major
Assignee: Jochen Theodorou
Reporter: Hiroki Taira
Votes: 0
Watchers: 0
Operations

If you were logged in you would be able to see more operations.
groovy

getting character encoding from command line is failed

Created: 17/Jun/07 01:50 AM   Updated: 01/Jul/07 08:12 AM   Resolved: 01/Jul/07 08:12 AM
Component/s: None
Affects Version/s: 1.0
Fix Version/s: 1.1-beta-2

Time Tracking:
Not Specified

File Attachments: 1. File HelloUtf8.groovy (0.0 kB)

Environment:
$ uname -a
CYGWIN_NT-6.0 hrk-PC 1.5.24(0.156/4/2) 2007-01-31 10:57 i686 Cygwin
java version "1.5.0_11"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_11-b03)
Java HotSpot(TM) Client VM (build 1.5.0_11-b03, mixed mode, sharing)


 Description  « Hide

I wrote a groovy script like,

----HelloUtf8.groovy (saved with UTF8)
println "こんにちは";


then, executed this and it resulted like,


$ groovy -c UTF8 HelloUtf8.groovy
Caught: BUG! exception in phase 'parsing' in source unit 'HelloUtf8.groovy' char
setName


so, I checked "GROOVY_1_0/src/main/groovy/ui/GroovyMain.java"
where getting encoding from command line.


@@ -241,7 +244,9 @@

// add the ability to parse scripts with a specified encoding
if (line.hasOption('c')) { - main.conf.setSourceEncoding(line.getOptionValue("encoding")); + main.conf.setSourceEncoding(line.getOptionValue('c')); + System.out.println("GroovyMain:encoding:" + + main.conf.getSourceEncoding()); }


It's found that 'main.conf.setSourceEncoding(line.getOptionValue("encoding"))' returned null,
and 'main.conf.setSourceEncoding(line.getOptionValue('c'))' returned "UTF-8".



Hiroki Taira added a comment - 17/Jun/07 02:00 AM

sorry. following statements are not collect.

It's found that 'main.conf.setSourceEncoding(line.getOptionValue("encoding"))' returned null,
and 'main.conf.setSourceEncoding(line.getOptionValue('c'))' returned "UTF-8".

they have to be fixed ,

It was found that 'line.getOptionValue("encoding")' returned null,
and 'line.getOptionValue('c')' returned "UTF-8".


Jochen Theodorou added a comment - 01/Jul/07 08:12 AM

should be fixed now... I had strange problem with the encoding options... on linux --encoding=UTF8 was correctly recognized, on windows groovy thought I wanted to open a file named UTF8. But this seems not to be a bug in Groovy, but in commons-cli.

Anyway I got it working by doing the following:

  • I set the file.encoding property to UTF8
  • I started groovy with 'groovy --encoding=UTF8 HelloUtf8.groovy > out.txt'
  • I used Firefox to view out.txt and set the encoding to UTF8 to verify the characters there look like these in HelloUtf8.groovy

If you wonder why I do it that complicated... it is really like hell telling windows to use UTF8 correctly on the console. In the end I gave up, because I found no font displaying japanese characters. I have one for chinese using the encoding gb2312, but that's no of much help here. It was much more easy using Firefox.

So I mark it as fixed for now