From: waterlan <wat...@xs...> - 2013-02-13 15:00:16
|
John Brown schreef op 2013-02-13 13:21: > On Wed, 13 Feb 2013 08:09:06 +0100, Erwin Waterlander wrote: > >> >>> On Tue, Feb 12, 2013 at 6:00 PM, John Brown wrote: >>>> >>>> If the default code page of the msys dll is ANSI and this is >>>> responsible for the output of `cat', then why is that output >>>> different from what is displayed in Notepad? Notepad++ shows >>>> the same thing as Notepad, and Notepad++ shows "UNIX" (for the >>>> 0x0A line endings), and "ANSI" in its status bar. >>>> >>> >> >> Notepad++ says "Unix" only because of the Unix line break. "Unix" >> doesn't say anything about the used encoding. All encodings, OEM, >> ANSI, >> ISO, Unicode, ..., can have Unix or DOS or Mac line breaks. >> >> regards, >> >> -- >> Erwin Waterlander > > > Indeed "UNIX" says nothing about the encoding. Immediately after > "UNIX", what do we see but: > > (for the 0x0A line endings) > ^^^^^^^^^^^^^^^^^ > > So clearly I know why Notepad++ said "UNIX". > > > For reasons best known to yourself, you ignored the rest of the > sentence where I wrote: > > *and "ANSI" in its status bar*. > ^^^^ > > So let me try again: > > 1) I opened the file in Notepad. I noticed that what was displayed > was different from the MSYS output, which you said is ANSI by > default. > > 2) Notepad uses ANSI by default, but it also works with UTF-8, > Unicode and Unicode Big-endian. Notepad does not display > conveniently the name of the encoding that it is using. You can > find out by File -> Save As. I did that and it said ANSI as I > expected. > > 3) To confirm it, I opened the file in Notepad++, which *does* > show the encoding that it is using. It said ANSI as I expected, > and the output was the same as in Notepad. > > 4) However, the output was diferent from the MSYS window, so back > to my original question: > > If MSYS uses ANSI by default, and Notepad uses ANSI by default, > then why is the file not displayed the same in both windows? > Because your default OEMCP is CP850. And the msys dll will do some 'smart' conversion of CP1252 to CP850. As I wrote earlier: If you change your default OEMCP permanently to 1252 in the registry, reboot your PC, and start a new MSYS, set MSYS terminal font to true type Lucida Console, then your MSYS shell will show exactly the same as notepad. Because now msys will not do a conversion. see also http://superuser.com/questions/387569/how-do-i-permantly-set-the-command-prompt-codepage-in-windows-7 -- Erwin Waterlander http://waterlan.home.xs4all.nl/ |