Grub2 Menu - wrong character set or language

On my 12.2/KDE 4.9 system

Somehow I have messed up Grub2 configuration

The top level Menu items that display are in readable font, but when I enter e to edit the details (such as getting to init 3 level) the text appears in what I believe is an Eastern Europe characterset.

Any suggestions on how to fix?
YAST - Boot Loader has no applicable settings/options.

Here is my current /boot/grub2/grub.cfg

#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub2-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#

### BEGIN /etc/grub.d/00_header ###
if  -s $prefix/grubenv ]; then
  load_env
fi
set default="${saved_entry}"

if  x"${feature_menuentry_id}" = xy ]; then
  menuentry_id_option="--id"
else
  menuentry_id_option=""
fi

export menuentry_id_option

if  "${prev_saved_entry}" ]; then
  set saved_entry="${prev_saved_entry}"
  save_env saved_entry
  set prev_saved_entry=
  save_env prev_saved_entry
  set boot_once=true
fi

function savedefault {
  if  -z "${boot_once}" ]; then
    saved_entry="${chosen}"
    save_env saved_entry
  fi
}

function load_video {
  if  x$feature_all_video_module = xy ]; then
    insmod all_video
  else
    insmod efi_gop
    insmod efi_uga
    insmod ieee1275_fb
    insmod vbe
    insmod vga
    insmod video_bochs
    insmod video_cirrus
  fi
}

if  x$feature_default_font_path = xy ] ; then
   font=unicode
else
insmod part_msdos
insmod ext2
set root='hd1,msdos3'
if  x$feature_platform_search_hint = xy ]; then
  search --no-floppy --fs-uuid --set=root --hint-bios=hd1,msdos3 --hint-efi=hd1,msdos3 --hint-baremetal=ahci1,msdos3 --hint='hd1,msdos3'  dd434acd-b4fb-438b-8f4f-8391cce9ec27
else
  search --no-floppy --fs-uuid --set=root dd434acd-b4fb-438b-8f4f-8391cce9ec27
fi
    font="/usr/share/grub2/unicode.pf2"
fi

if loadfont $font ; then
  set gfxmode=auto
  load_video
  insmod gfxterm
  set locale_dir=$prefix/locale
  set lang=en_US
  insmod gettext
fi
terminal_output gfxterm
insmod part_msdos
insmod ext2
set root='hd1,msdos1'
if  x$feature_platform_search_hint = xy ]; then
  search --no-floppy --fs-uuid --set=root --hint-bios=hd1,msdos1 --hint-efi=hd1,msdos1 --hint-baremetal=ahci1,msdos1 --hint='hd1,msdos1'  054d5c05-657f-4698-8583-4573dba85040
else
  search --no-floppy --fs-uuid --set=root 054d5c05-657f-4698-8583-4573dba85040
fi
insmod gfxmenu
loadfont ($root)/grub2/themes/openSUSE/DejaVuSans-Bold14.pf2
loadfont ($root)/grub2/themes/openSUSE/DejaVuSans10.pf2
loadfont ($root)/grub2/themes/openSUSE/DejaVuSans12.pf2
loadfont ($root)/grub2/themes/openSUSE/ascii.pf2
insmod png
set theme=($root)/grub2/themes/openSUSE/theme.txt
export theme
insmod part_msdos
insmod ext2
set root='hd1,msdos1'
if  x$feature_platform_search_hint = xy ]; then
  search --no-floppy --fs-uuid --set=root --hint-bios=hd1,msdos1 --hint-efi=hd1,msdos1 --hint-baremetal=ahci1,msdos1 --hint='hd1,msdos1'  054d5c05-657f-4698-8583-4573dba85040
else
  search --no-floppy --fs-uuid --set=root 054d5c05-657f-4698-8583-4573dba85040
fi
insmod png
background_image -m stretch /grub2/themes/openSUSE/background.png
if  x${boot_once} = xtrue ]; then
  set timeout=0
elif sleep --interruptible 0 ; then
  set timeout=60
fi
### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/05_menu_color ###
set color_normal=black/black
set color_highlight=white/black
### END /etc/grub.d/05_menu_color ###

### BEGIN /etc/grub.d/10_linux ###
menuentry 'openSUSE' --class opensuse --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-dd434acd-b4fb-438b-8f4f-8391cce9ec27' {
    load_video
    set gfxpayload=keep
    insmod gzio
    insmod part_msdos
    insmod ext2
    set root='hd1,msdos1'
    if  x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd1,msdos1 --hint-efi=hd1,msdos1 --hint-baremetal=ahci1,msdos1 --hint='hd1,msdos1'  054d5c05-657f-4698-8583-4573dba85040
    else
      search --no-floppy --fs-uuid --set=root 054d5c05-657f-4698-8583-4573dba85040
    fi
    echo    'Loading Linux 3.4.11-2.16-desktop ...'
    linux    /vmlinuz-3.4.11-2.16-desktop root=UUID=dd434acd-b4fb-438b-8f4f-8391cce9ec27   video=1680x1050 resume=/dev/disk/by-id/ata-WDC_WD1500AHFD-00RAR4_WD-WMAP41624125-part2 splash=silent quiet showopts
    echo    'Loading initial ramdisk ...'
    initrd    /initrd-3.4.11-2.16-desktop
}
submenu 'Advanced options for openSUSE' $menuentry_id_option 'gnulinux-advanced-dd434acd-b4fb-438b-8f4f-8391cce9ec27' {
    menuentry 'openSUSE, with Linux 3.4.11-2.16-desktop' --class opensuse --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.4.11-2.16-desktop-advanced-dd434acd-b4fb-438b-8f4f-8391cce9ec27' {
        load_video
        set gfxpayload=keep
        insmod gzio
        insmod part_msdos
        insmod ext2
        set root='hd1,msdos1'
        if  x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd1,msdos1 --hint-efi=hd1,msdos1 --hint-baremetal=ahci1,msdos1 --hint='hd1,msdos1'  054d5c05-657f-4698-8583-4573dba85040
        else
          search --no-floppy --fs-uuid --set=root 054d5c05-657f-4698-8583-4573dba85040
        fi
        echo    'Loading Linux 3.4.11-2.16-desktop ...'
        linux    /vmlinuz-3.4.11-2.16-desktop root=UUID=dd434acd-b4fb-438b-8f4f-8391cce9ec27   video=1680x1050 resume=/dev/disk/by-id/ata-WDC_WD1500AHFD-00RAR4_WD-WMAP41624125-part2 splash=silent quiet showopts
        echo    'Loading initial ramdisk ...'
        initrd    /initrd-3.4.11-2.16-desktop
    }
    menuentry 'openSUSE, with Linux 3.4.11-2.16-desktop (recovery mode)' --class opensuse --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.4.11-2.16-desktop-recovery-dd434acd-b4fb-438b-8f4f-8391cce9ec27' {
        load_video
        set gfxpayload=keep
        insmod gzio
        insmod part_msdos
        insmod ext2
        set root='hd1,msdos1'
        if  x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd1,msdos1 --hint-efi=hd1,msdos1 --hint-baremetal=ahci1,msdos1 --hint='hd1,msdos1'  054d5c05-657f-4698-8583-4573dba85040
        else
          search --no-floppy --fs-uuid --set=root 054d5c05-657f-4698-8583-4573dba85040
        fi
        echo    'Loading Linux 3.4.11-2.16-desktop ...'
        linux    /vmlinuz-3.4.11-2.16-desktop root=UUID=dd434acd-b4fb-438b-8f4f-8391cce9ec27  showopts apm=off noresume edd=off powersaved=off nohz=off highres=off processor.max_cstate=1 nomodeset x11failsafe
        echo    'Loading initial ramdisk ...'
        initrd    /initrd-3.4.11-2.16-desktop
    }
}

### END /etc/grub.d/10_linux ###

### BEGIN /etc/grub.d/20_linux_xen ###
### END /etc/grub.d/20_linux_xen ###

### BEGIN /etc/grub.d/20_ppc_terminfo ###
### END /etc/grub.d/20_ppc_terminfo ###

### BEGIN /etc/grub.d/30_os-prober ###
menuentry 'Microsoft Windows XP Professional (on /dev/sda1)' --class windows --class os $menuentry_id_option 'osprober-chain-648CDEC98CDE94C0' {
    insmod part_msdos
    insmod ntfs
    set root='hd0,msdos1'
    if  x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1'  648CDEC98CDE94C0
    else
      search --no-floppy --fs-uuid --set=root 648CDEC98CDE94C0
    fi
    drivemap -s (hd0) ${root}
    chainloader +1
}
### END /etc/grub.d/30_os-prober ###

### BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.

###Don't change this comment - UpdateGrub2 identifier: Original name: Grub 1.99 in sda MBR###
menuentry "Grub 1.99 in /dev/sda " {
    set root=(hd0,msdos)
    chainloader +1
}

###Don't change this comment - UpdateGrub2 identifier: Original name: Legacy Grub in sdb MBR###
menuentry "Legacy Grub in /dev/sdb " {
    set root=(hd1,msdos)
    chainloader +1
}

###Don't change this comment - UpdateGrub2 identifier: Original name: Grub 1.99 in sdb MBR###
menuentry "Grub 1.99 in /dev/sdb " {
    set root=(hd1,msdos)
    chainloader +1
}
### END /etc/grub.d/40_custom ###

### BEGIN /etc/grub.d/41_custom ###
if  -f  ${config_directory}/custom.cfg ]; then
  source ${config_directory}/custom.cfg
elif  -z "${config_directory}" -a -f  $prefix/custom.cfg ]; then
  source $prefix/custom.cfg;
fi
### END /etc/grub.d/41_custom ###

### BEGIN /etc/grub.d/90_persistent ###
### END /etc/grub.d/90_persistent ###


I would look for the following file /boot/grub2/locale/en_US.mo and if found I would delete it. This was from a previous grub2 fix that was not really correct.

You can create the file /etc/grub.d/05_menu_color with the following contents as root

#!/bin/sh -e
set -e

prefix=/usr
exec_prefix=/usr

. /usr/share/grub2/grub-mkconfig_lib

COLOR_NORMAL="black/black"
COLOR_HIGHLIGHT="white/black"

if  "${GRUB_TERMINAL_OUTPUT}" = "gfxterm" ] ; then
        cat <<EOF
set color_normal=${COLOR_NORMAL}
set color_highlight=${COLOR_HIGHLIGHT}
EOF
else
  cat << EOF
set menu_color_normal=white/black
set menu_color_highlight=black/light-gray
EOF
fi

This will change the colors when you try to edit openSUSE startup line when you run the terminal command:

sudo /usr/sbin/grub2-mkconfig --output=/boot/grub2/grub.cfg

I have a bash script you can use to edit these kind of files:

SYSEdit - System File Editor - Version 1.00 - Blogs - openSUSE Forums

And another well suited to work with the grub 2 booting menu setup:

GNU Grub2 Command Help/Config Editor - Version: 1.85 - Blogs - openSUSE Forums

It is hard to say what else might be wrong, but see if these do help.

Thank You,

Thanks, James.
Removing /boot/grub2/locale/en_US.mo seems to be the solution to my issue.

/etc/grub.d/05_menu_color is already in place on my system.

I rebuilt grub.cfg, all seems OK again

That is good news to hear. I am not sure what to say about Grub 2 and its errors, but I am getting more used to how it works and it is working OK for me so far.

Thank You,