diff options
-rw-r--r-- | lisp/term/x-win.el | 2 | ||||
-rw-r--r-- | src/xterm.c | 6 |
2 files changed, 6 insertions, 2 deletions
diff --git a/lisp/term/x-win.el b/lisp/term/x-win.el index 57c6b785e73..62684f52cc9 100644 --- a/lisp/term/x-win.el +++ b/lisp/term/x-win.el @@ -1623,7 +1623,7 @@ found." (if (equal x-locale "C") ;; Treat the C locale specially, as it means "ascii" under X. 'ascii - (let ((locale (downcase x-locale))) + (let ((locale (locale-translate (downcase x-locale)))) (or (locale-name-match locale locale-preferred-coding-systems) (when locale (if (string-match "\\.\\([^@]+\\)" locale) diff --git a/src/xterm.c b/src/xterm.c index f3bfae457ba..37e7916486e 100644 --- a/src/xterm.c +++ b/src/xterm.c @@ -29252,7 +29252,11 @@ x_term_init (Lisp_Object display_name, char *xrm_option, char *resource_name) #endif #ifdef HAVE_X_I18N - xim_initialize (dpyinfo, resource_name); + /* Avoid initializing input methods if the X library does not + support Emacs's locale. When the current locale is not + supported, decoding input method strings becomes undefined. */ + if (!XSupportsLocale ()) + xim_initialize (dpyinfo, resource_name); #endif xsettings_initialize (dpyinfo); |