ASCII is actually a fine value here it's just that we don't currently support the # -*- encoding syntax. What we do currently support is the normal Unicode headers at the beginning of files that Windows typically does (CPython also will recognize these). If that's present then we'll decode the file as Unicode otherwise we'll decode it as ASCII (this is a feature of the BCL that we pick up for free).
We do have an active bug to support PEP-263 file encoding syntax - which is what you're using here. Based upon your feedback I've raised the priority of this bug but I'm still not sure it'll make our next release. What we'd do then is get the encoding and then re-open the file w/ the correct encoding. It seems like you have a reasonable work around for yourself for the time being but I don't think this will be a portable solution that will work from machine to machine - for example if the default encoding is some non-Unicode encoding then many characters won't be available. -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Michael Tan Sent: Wednesday, January 04, 2006 6:56 AM To: [email protected] Subject: [IronPython] Encoding problem Dear All, Here I am. :) This time, I have another silly problem about encoding of IronPython. According to my experience in programming, now IP can support unicode under interactive mode. If I put the unicode into .py file, the unicode code can not be displayed correctly.And I followed the Python Specification and tried to add the encoding declaration into .py file like this: # -*- coding: utf-8 -*- But this declaration doesn't work. I found that what results in the encoding problem. The fromFile method in Parser.cs is the key factor. Here is the source of fromFile method: public static Parser fromFile(CompilerContext context, string filename) { string data; // we choose ASCII by default, if the file has a Unicode header though // we'll automatically get it as unicode. StreamReader sr = new StreamReader(File.OpenRead(filename), System.Text.Encoding.ASCII); using (sr) { data = sr.ReadToEnd(); sr.Close(); } return new Parser(context, filename, new Tokenizer(context, data.ToCharArray())); } I revised the System.Text.Encoding.ASCII to System.Text.Encoding.Default. The encoding problem was solved. I do hope receive the official comment about this revision. Thank you very much. Regards, Michael _______________________________________________ users mailing list [email protected] http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
