locked
Alt-codes / keystrokes for diacritical characters changed? RRS feed

  • Question

  • In all my previous Windows installations (EN-US or otherwise) I have always been able to enter common diacritical characters with an Alt-<numeric keypad> combination. Such as Alt-130 for é. Many of us here in Europe have memorized these numeric combinations from the old days of Dos and Word Perfect, and we rely on them heavily. They were the most reliable way to enter diacritical characters at any keyboard for any installation of any Windows version.

    This seems now broken on every Windows 7 installation I perform. The Alt-130 always gives me a ♥ instead of an é.
     
    I've tried Google and Bing, there are many people with similar problems. I've tried different locales and language packs. Nothing. I've tried a lot.

    What has happened?

    Regards, Nick

    Friday, December 4, 2009 7:39 PM

Answers

  • It seems it is not UTF-16 (DBCS) now but UTF-8. Alt-130 (é) is a Latin-1 character.

    UTF-8 preserves ASCII, but not Latin-1, because the characters >127 are different from Latin-1.

    UTF-8 can have from one to four bytes per character, but characters with the first bit set have to be multibyte sequences.

    UTF-16 characters are either one or two 16-bit codes.  Thus 0x0082 is é in UTF-16.

    See:  http://www.unicode.org/faq/utf_bom.html#gen9, and Unicode, and Code Pages in the MSDN Library.
    • Marked as answer by Robinson Zhang Thursday, December 10, 2009 5:44 AM
    Tuesday, December 8, 2009 4:24 AM

All replies

  • SaintNick schreef op 4-12-2009 20:39:

    > This seems now broken on every Windows 7 installation I perform. The
    > Alt-130 always gives me a ♥ instead of an é.
    >
    Tried it with a US and a NL-Windows7: alt-130 gives é .
    Notepad, command line, US-international keyboard, US-keyboard, always é.
    Sorry ... ;-)

    --
    Karel Vos [MVP - Windows Desktop Experience]
    Friday, December 4, 2009 8:28 PM
  • It depends on the font, and has been changed, apparently.

    If you open the Character Map application in "All Programs\Accessories\System Tools",  you can see what the character codes are for any font on your system.  You can also see the keystroke combinations for most of the fonts.  It should show you that in the Ariel font, the keystroke combination for é is Alt+0233.  Note the leading 0 (zero) is required here.

    For system fonts, such as Courier or Fixedsys, it does not show the keystroke combination, but you will see that the character code for é is 0xE9.  This is the same as 233.

    The Terminal font does indeed show 0x82 as the character code for é.  This is the default font for a command prompt.  Thus in a command prompt, your old key combination would work.

    • Proposed as answer by ArcticBloom Saturday, December 5, 2009 8:29 AM
    • Unproposed as answer by SaintNick Monday, December 7, 2009 10:59 AM
    Friday, December 4, 2009 9:36 PM
  • Hi

    Yes , it depends on the used font.

    Take a look at the character map and switch font type in the top bar , you'll see the some of the codes change.
    Saturday, December 5, 2009 8:44 AM
  • Thanks for the reply, but I've done some further investigation and there has to be another explanation.

    All the workstations at my work do give the correct characters e.g. é for Alt-130, in every application. As does the previous XP installation on the same PC when I boot from that.

    Brian, for all fonts in the character map, if you choose advanced view, then character set "Dos Western Europe", you will see that the hover flag shows for é: [ U+00E9 (0x82): Latin Small Letter E With Acute ]

    Hex 0x82 is decimal 130 and that is indeed the keystroke that always gives é. In every application, seemingly regardless of font or whatever, on all the PC's except this one. Does the keystroke work on yours?

    So it's got to be either a regional settings/locale/codepage issue, or else a keyboard driver issue, or perhaps even something about the source Windows 7 Ultimate source installation disk which is from my MSDN subscription and was disk 4631 labeled with the languages English,Dutch,French,German,Italian. (There was also disk 4632 which is labeled English,Portuguese,Spanish).

    By the way the codes do work on the trouple machine through terminal server, but that doesn't surprise me as they are probably resolved at the terminal server client end.


    Monday, December 7, 2009 10:58 AM
  • I have had problem with keyboard which can be fixed by disabling** Human Int.Dev. Access in Services (and removing hand held remote USB connection**). The problem I see occurs in various games keyboard assignments of, for instance
    ` \ ] keys which will not work correctly unless I do **.

    This only started happening with Wndows 7 in my case and it took some time to figure out the correction for my problem. Though your compliant differs, this case may add light to overall? problem.

    Monday, December 7, 2009 11:26 AM
  • Ok, I'm thoroughly confused.

    You are right, my reply was not an answer.

    Alt+130 gives me é, as does Alt+0233 (é).   Nothing I have tried will give me a ♥ using key combinations.  Character map shows it as U+2665.  The only way I can get it is with copy and paste, from character map.   Most fonts don't seem to have it.  The only ones that do seem to be unicode.

    I think it has something to do with Windows 7 enforcing unicode or DBCS, or interpreting it differently. I might as well forget what I thought I knew about unicode.  I know nothing.  I don't know what the syntax of U+#### is.  Although Alt+0233 also gives me é, whereas Alt+233 gives Θ (Roman O with middle tilde).
    Monday, December 7, 2009 10:05 PM
  • It seems it is not UTF-16 (DBCS) now but UTF-8. Alt-130 (é) is a Latin-1 character.

    UTF-8 preserves ASCII, but not Latin-1, because the characters >127 are different from Latin-1.

    UTF-8 can have from one to four bytes per character, but characters with the first bit set have to be multibyte sequences.

    UTF-16 characters are either one or two 16-bit codes.  Thus 0x0082 is é in UTF-16.

    See:  http://www.unicode.org/faq/utf_bom.html#gen9, and Unicode, and Code Pages in the MSDN Library.
    • Marked as answer by Robinson Zhang Thursday, December 10, 2009 5:44 AM
    Tuesday, December 8, 2009 4:24 AM
  • Whatever it was, it's suddenly automagically started working again this morning. 
    My conclusions about Windows 7 breaking this "feature" were wrong, apparently.

    Unless Microsoft silently fixed it again with a recent update...?

    Now on to solve my outstanding Windows 7 issues:

    1. Waking spontaneously from stand-by (the nics and WOL are disabled)
    2. An unrecognized USB device warning after waking
    3. A mysteriously flashing Close window button (upper right white cross) when I hover the mouse over it on a device manager properties dialog


    Thanks everyone 


    Monday, December 14, 2009 9:30 AM