¿Cómo configurar la codificación alternativa a UTF-8 en Firefox?


12

He escrito un documento de rebaja noruego:

$ file brukerveiledning.md
brukerveiledning.md: UTF-8 Unicode text

Lo he convertido a HTML usando el markdowncomando:

$ markdown > brukerveiledning.html <  brukerveiledning.md 
$ file brukerveiledning.html 
brukerveiledning.html: UTF-8 Unicode text

Sin embargo, Firefox insiste en usar la codificación "windows-1252", rompiendo los caracteres no ASCII. Intenté configurar el cambio de la codificación de texto alternativo de "Predeterminado para la configuración regional actual" (que aquí en el Reino Unido debería ser ISO-8859-1 o UTF-8) a "Centroeuropeo, ISO", "Centroeuropeo, Microsoft "y" Otro (incl. Europa occidental) ". Ninguno de estos puede mostrar æ, ø y å. No hay opciones de Unicode. También he intentado cambiar intl.fallbackCharsetList.ISO-8859-1en about: config para diversos valores como utf8, utf-8, iso-8859-1, sin suerte.

Usando este markdownpaquete:

$ pacman --query --owns "$(which markdown)"
/usr/bin/markdown is owned by markdown 1.0.1-6

y este local:

$ locale 
LANG=en_GB.utf8
LC_CTYPE="en_GB.utf8"
LC_NUMERIC="en_GB.utf8"
LC_TIME="en_GB.utf8"
LC_COLLATE="en_GB.utf8"
LC_MONETARY="en_GB.utf8"
LC_MESSAGES="en_GB.utf8"
LC_PAPER="en_GB.utf8"
LC_NAME="en_GB.utf8"
LC_ADDRESS="en_GB.utf8"
LC_TELEPHONE="en_GB.utf8"
LC_MEASUREMENT="en_GB.utf8"
LC_IDENTIFICATION="en_GB.utf8"
LC_ALL=

Me intentó pedir una solución en el markdownnivel de comando, pero que fue rechazada.


¿Qué pasa con la configuración de Ver> Codificación de texto> Unicode desde el menú de Firefox?
Paul Nordin

@PaulNordin Esa es una buena manera de hacerlo para una página (¡me había olvidado de que ese menú existía incluso porque lo eliminaron por defecto!), Pero no creo que eso establezca el valor predeterminado.
l0b0

1
Oh sí, es solo temporal. Creo que el problema podría estar en otra parte. Firefox se basa en encabezados o meta para determinar el tipo de archivo. Por ejemplo, creé un archivo UTF-8 test.html que lo contenía åæâéèy lo abrí en firefox. La producción fue de basura: åæâéè. Sin embargo, si agrego <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />a la parte superior, sale correctamente. No estoy seguro de cómo haría esto para un archivo .md.
Paul Nordin

También quiero hacer esto para poder ver el correo electrónico html de mutt iniciando firefox, aún así, el archivo html que mutt produce es utf-8 sin metaetiquetas.
pepper_chico

Respuestas:


4

Actualización: esto se ha solucionado desde Firefox 66

Archivos HTML (y texto sin formato) codificados con UTF-8 cargados desde el archivo: las URL ahora son compatibles sin <meta charset="utf-8">la lista de materiales UTF-8

https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/66#HTML


Información histórica de 2016

El razonamiento detrás de este comportamiento parece estar descrito en los errores de Mozilla 815551 (Autodetect UTF-8 de forma predeterminada) y 1071816 (Admite cargar archivos de texto / sin formato UTF-8 BOMless desde el archivo: URL)

Según tengo entendido, básicamente se reduce a " uno siempre debe especificar la codificación ya que la detección es demasiado poco confiable ".

  • Para contenido no local, debe aprovechar el protocolo. Con HTTP esto proporcionaría lo correcto charseten el Content-Typeencabezado
  • Para el contenido HTML, también puede usar Doctype, es decir <meta charset="utf-8" />
  • Y para cualquier otra cosa, la única forma estándar que queda es especificar una lista de materiales ...

Los desarrolladores de Mozilla parecen estar abiertos para un parche que agrega una configuración de preferencias, por lo que un día podría ser posible abrir documentos UTF-8 locales sin BOM en Firefox.


4

La configuración de la codificación alternativa a UTF-8 en Firefox se ha bloqueado deliberadamente; consulte bugzilla.mozilla.org/show_bug.cgi?id=967981#c4.

Dos formas de evitar esto que he estado viendo son:

1] Aplique algunos parches triviales a la fuente y cree Firefox usted mismo para agregar una opción Unicode [UTF-8] a Preferencias | Contenido | Fuentes y colores | Avanzado | Menú desplegable "Codificación de texto de reserva".

2] Ejecute un servidor httpd local [Apache] y configure un servidor virtual basado en nombres utfxpara los archivos codificados utf-8 en el directorio /my/utf-8/files. Luego se puede generar un encabezado http utrs-8 charset, que Firefox reconocerá y mostrará el archivo como codificado en UTF-8. ¡Por supuesto, la codificación real del archivo debe ser UTF-8!

a) /etc/httpd/httpd.conf - agregue:

<VirtualHost *:80>
    # This first-listed virtual host is also the default for *:80
    ServerName localhost
    DocumentRoot "/srv/httpd/htdocs"
</VirtualHost>
<VirtualHost *:80>
    ServerName utfx
    DocumentRoot "/my/utf-8/files"
      <Directory "/my/utf-8/files">
          Options Indexes
          Require all granted
      </Directory>
## show UTF-8 characters in file names:
    IndexOptions Charset=UTF-8
## for files with extension html or txt:
    AddCharset UTF-8 txt html
## for extensionless files:
      <Files *>
          ForceType 'text/plain; charset=UTF-8'
      </Files>
      <Files *\.*>
          ForceType None
      </Files>
</VirtualHost>

(Re) inicie el servidor - apachectl restarto apachectl graceful.

b) / etc / hosts: agregue el nombre de dominio para acceder a los archivos codificados utf-8:

127.0.0.1   utfx

La información del tipo de contenido que envía el servidor se puede verificar con wget -S <URL>:

wget -S http://utfx/test{æø,.txt,.html} 2>&1 >/dev/null | grep Content-Type

para los tres tipos de archivo (testæø, test.txt, test.html).
La salida debe ser:

Tipo de contenido: texto / sin formato; charset = utf-8
Tipo de contenido: text / plain; charset = utf-8
Tipo de contenido: text / html; charset = utf-8

c) about: config - add New | Boolean:

browser.fixup.domainwhitelist.utfx  "true"

luego ingrese utfxen la barra de direcciones de Firefox para obtener la lista de archivos ...


+1 para el enlace de Bugzilla. Desafortunadamente, las soluciones son excesivas para el problema.
l0b0

3

Como he comentado en su pregunta, estaba luchando por obtener lo mismo con el fin de mostrar correctamente html parcial (se conoce la codificación pero no hay una metaetiqueta para codificar) de Mutt en Firefox a través de Mailcap.

Al final, descubrí un comando que funciona y que también puede ayudarte:

  • uconv --add-signature -f %{charset} -t UTF-8 %s | sponge %s && firefox -new-tab %s & sleep 5

Descubrí que cuando su archivo codificado UTF-8 contiene BOM, Firefox asume que es UTF-8. Así que he usado el uconvcomando para agregar la firma BOM. Suponga que %{charset}es el juego de caracteres de entrada y %ses el nombre de archivo. La spongeherramienta (del moreutilspaquete) ayuda a cambiar el archivo in situ y sleepes solo para que Mutt no elimine el archivo antes de que Firefox termine de cargarlo.

No he encontrado ninguna otra opción para establecer una codificación alternativa en Firefox.


2

Si configurar el respaldo para solo archivos sin conexión, en UTF-8, es suficiente para usted, puede ir a about:configy establecer el valor de intl.charset.fallback.utf8_for_filea true.

( fuente )


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.