frescobaldi / frescobaldi

Frescobaldi LilyPond Editor
http://www.frescobaldi.org/
GNU General Public License v2.0
746 stars 155 forks source link

File name decoding error #1550

Closed OnlyZero closed 1 year ago

OnlyZero commented 1 year ago

Iniciando lilypond 2.24.0 [God Rest You Merry, Gentlemen.ly]... Backtrace: 0 (apply-smob/1 #<catch-closure 7f8d20253b20>)

ERROR: In procedure apply-smob/1: Throw to key decoding-error' with args("scm_from_stringn" "input locale conversion error" 22 #vu8(47 104 111 109 101 47 111 110 108 121 122 101 114 111 47 76 105 108 121 112 111 110 100 47 71 111 100 32 82 101 115 116 32 89 111 117 32 77 101 114 114 121 44 32 71 101 110 116 108 101 109 101 110 47 71 111 100 32 82 101 115 116 32 89 111 117 32 77 101 114 114 121 44 32 71 101 110 116 108 101 109 101 110 46 108 121))'. Se ha devuelto al salir el código 1.

Screenshot_20230309_204310

jeanas commented 1 year ago

There have been some problems with file name encodings (see #1450), but I am puzzled about this one since your file name does not seem to contain non-ASCII characters.

Yet the byte vector in the error message decodes to /home/onlyzero/Lilypond/God Rest You Merry, Gentlemen/God Rest You Merry, Gentlemen.ly in ASCII, so that's very clearly the problem.

@OnlyZero What language is your Windows computer set to? What's your Windows version?

jeanas commented 1 year ago

Looking into Guile, given 22 = EINVAL which comes from a libunistring function, I think this might happen if the locale encoding cannot be understood somehow?

This is from libguile/script.c in Guile 2.2:

/* Return a list of strings from ARGV, which contains ARGC strings
   assumed to be encoded in the current locale.  Use
   `environ_locale_charset' instead of relying on
   `scm_from_locale_string' because the user hasn't had a change to call
   (setlocale LC_ALL "") yet.

   XXX: This hack is for 2.0 and will be removed in the next stable
   series where the `setlocale' call will be implicit.  See
   <http://lists.gnu.org/archive/html/guile-devel/2011-11/msg00040.html>
   for details.  */
static SCM
locale_arguments_to_string_list (int argc, char **const argv)
{
  int i;
  SCM lst;
  const char *encoding;

  encoding = environ_locale_charset ();
  for (i = argc - 1, lst = SCM_EOL;
       i >= 0;
       i--)
    lst = scm_cons (scm_from_stringn (argv[i], (size_t) -1, encoding,
                      SCM_FAILED_CONVERSION_ESCAPE_SEQUENCE),
            lst);

  return lst;
}

Ugh.

OnlyZero commented 1 year ago

Ha habido algunos problemas con la codificación de nombres de archivos (ver #1450 ), pero estoy desconcertado porque su nombre de archivo no parece contener caracteres que no sean ASCII.

Sin embargo, el vector de bytes en el mensaje de error se decodifica para /home/onlyzero/Lilypond/God Rest You Merry, Gentlemen/God Rest You Merry, Gentlemen.lyen ASCII, así que ese es claramente el problema.

@OnlyZero¿En qué idioma está configurado su computadora con Windows? ¿Cuál es tu versión de Windows?

There have been some problems with file name encodings (see #1450), but I am puzzled about this one since your file name does not seem to contain non-ASCII characters.

Yet the byte vector in the error message decodes to /home/onlyzero/Lilypond/God Rest You Merry, Gentlemen/God Rest You Merry, Gentlemen.ly in ASCII, so that's very clearly the problem.

@OnlyZero What language is your Windows computer set to? What's your Windows version?

Interesting! The situation, I make the corrections and then report the results.

image

OnlyZero commented 1 year ago

image

jeanas commented 1 year ago

Ah, I thought that was Windows, didn't recognize the desktop environment (is that KDE? I'm not familiar with DEs other than GNOME...).

The locale you have, es_DO.UTF-8.UTF-8, looks weird, this should probably just read es_DO.UTF-8, shouldn't it? Did you set it yourself somewhere? What happens if you launch Frescobaldi from a terminal using LC_ALL=es_DO.UTF-8 frescobaldi?

OnlyZero commented 1 year ago

Your suggestion was perfect. When I specify to "frescobaldi" the decoding (es_DO.UTF-8.UTF-8) in Spanish from the terminal (LC_ALL=es_DO.UTF-8 frescobaldi) "frescobaldi" works almost correctly. But now I have to use the English system completely, that is to say:

1 - Note name: c d e f g a b. 2 - The suffixes of the accidentals: s/-sharp, f/-flat, ss/x/-sharpsharp, ff/-flatflat

Because the decoding is for the Spanish language. Very funny and weird.

imagen

jeanas commented 1 year ago

The note name language in LilyPond is completely independent from the computer's locale. You have English note names because you used \include "english.ly" at the beginning. If you replace that with \language espanol (note that the modern syntax for \include "english.ly" is \language english), you will get note names in Spanish. If you remove it, you get the default note names (Dutch).

What does localectl list-locales output? For me, it doesn't have entries with .UTF-8.UTF-8. The form of your locale seems odd to me, I think it's a misconfiguration of your computer. LilyPond (through Guile) may not be handling this problem in the most graceful way, but your locale seems weird in the first place. Did you change it or was it set by the Arch Linux installer? Maybe try localectl set es_DO.UTF-8?

OnlyZero commented 1 year ago

The note name language in LilyPond is completely independent from the computer's locale. You have English note names because you used \include "english.ly" at the beginning. If you replace that with \language espanol (note that the modern syntax for \include "english.ly" is \language english), you will get note names in Spanish. If you remove it, you get the default note names (Dutch).

What does localectl list-locales output? For me, it doesn't have entries with .UTF-8.UTF-8. The form of your locale seems odd to me, I think it's a misconfiguration of your computer. LilyPond (through Guile) may not be handling this problem in the most graceful way, but your locale seems weird in the first place. Did you change it or was it set by the Arch Linux installer? Maybe try localectl set es_DO.UTF-8?

Typing error, having included \include "english.ly". As for the decryption settings of my Arch Linux, I did not change it.

Later, I will try to make a new configuration. Now I'm driving.

OnlyZero commented 1 year ago

Jeanas (Jean Abou-Samra), thank you for your help. I made the necessary adjustments on my Arch Linux. I attach the image, in case someone needs it in the future. A true professional.

Tips: File name decoding error, it was caused by a conflict in my ArchLinux operating system. For some unknown reason my KDE had two locales or system languages (en_US.UTF-8 and es_DO.UTF-8 UTF-8).

imagen