AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 534799
Accepted
Ned64
Ned64
Asked: 2019-08-10 11:25:56 +0800 CST2019-08-10 11:25:56 +0800 CST 2019-08-10 11:25:56 +0800 CST

Como corrigir o problema UTF-8/locale no openSUSE Linux (no terminal/nomes de arquivos e diálogos do programa)

  • 772

Eu tenho alguns nomes de arquivos/pastas que não são 7 bits limpos e não são exibidos corretamente no meu sistema openSUSE.

Exemplo para a pasta /music/Gabriel_Fauré:

# ls -1d /music/Gabriel_Faur?
/music/Gabriel_Faur??

Talvez a localidade de LC_CTYPEnão esteja definida para algum valor UTF-8?

# locale
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=en_US.UTF-8
LC_CTYPE=en_US.UTF-8
LC_NUMERIC=en_US.UTF-8
LC_TIME=en_GB.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=en_GB.UTF-8
LC_MESSAGES=en_US.UTF-8
LC_PAPER=a4
LC_NAME=en_US.UTF-8
LC_ADDRESS=en_US.UTF-8
LC_TELEPHONE=en_US.UTF-8
LC_MEASUREMENT=en_US.UTF-8
LC_IDENTIFICATION=en_US.UTF-8
LC_ALL=

Bem, isso é bom LC_CTYPEpara Unicode, eu acho! O que diz a mensagem de erro?

Curiosamente, definir LC_ALLo valor exato de LC_CTYPEfuncionará:

# setenv LC_ALL en_US.UTF-8
# ls -1d /music/Gabriel_Faur?
/music/Gabriel_Fauré

No entanto, eu NÃO quero definir LC_ALL para en_US.UTF-8 (ou qualquer coisa, realmente) porque isso atrapalha algumas outras configurações! Não seria nenhuma correção, mas apenas uma solução ruim para mim.

Além disso, por que LC_CTYPE é ignorado por /bin/lse/ou meu shell ao imprimir caracteres na tela?

No Arch Linux eu verificaria se as localidades são geradas mas não encontrei nada sobre o assunto no openSUSE. Além disso, a localidade parece existir.

EDITAR:

# ls -1d /music/Gabriel_Faur? | hexdump -C
00000000  2f 6d 75 73 69 63 2f 47  61 62 72 69 65 6c 5f 46  |/music/Gabriel_F|
00000010  61 75 72 c3 a9 0a                                 |aur...|
00000016

Portanto, está correto UTF-8 (tanto quanto posso dizer).

EDIT2:

# locale -a | grep en_US
en_US
en_US.iso885915
en_US.utf8
# locale -a | wc -l
495

EDIT3 (após a resposta correta):

# unsetenv LC_PAPER
# unsetenv LC_ALL
# ls -1d /*/Gabriel_Faur?
/music/Gabriel_Fauré

A LC_PAPER=a4variável impede que caracteres Unicode codificados em UTF-8 sejam impressos (sem trocadilhos) na tela !

opensuse locale
  • 1 1 respostas
  • 4812 Views

1 respostas

  • Voted
  1. Best Answer
    Stéphane Chazelas
    2019-08-10T12:30:29+08:002019-08-10T12:30:29+08:00

    O que essa locale: Cannot set LC_ALL to default locale: No such file or directorymensagem informa é que uma das localidades que você está tentando usar não existe. Não se trata da $LC_ALLvariável de ambiente, localeestá apenas relatando um erro quando a setlocale(LC_ALL, "")chamada que faz para inicializar a localização com base nas variáveis ​​de ambiente retorna NULL indicando que uma localidade configurada por meio de uma das várias LC_*/LANGvariáveis ​​não pode ser encontrada.

    Aqui, como funciona com LC_ALL=en_US.UTF-8o qual substitui todos os outros, o problema deve ser com LC_PAPER=a4. a4não é o nome de uma localidade válida em seu sistema e está causando setlocal(LC_ALL, "")falha.

    Quando setlocale()falha, o comportamento é padronizado para a localidade C, onde a codificação de caracteres é ASCII. Na localidade C, cada byte é um caractere, mas 0xc3 e 0xa9 são desconhecidos, pois não estão em ASCII, portanto ls -q(e -qé ativado quando a saída vai para um terminal) os renderiza como ?.

    Você pode ver a lista de localidades disponíveis em seu sistema com:

    locale -a
    

    Você provavelmente não vai encontrar um a4lá. Se você quiser que o tamanho do papel seja A4, onde as locale -k LC_PAPERsaídas:

    height=297
    width=210
    paper-codeset="UTF-8"
    

    Você provavelmente desejará usar uma localidade europeia para $LC_PAPER, algo como en_GB.UTF-8.

    • 3

relate perguntas

  • Não é possível instalar o aplicativo Discord no Opensuse 42.3?

  • Pendurado no botão liga/desliga do Gnome, pressione [fechado]

  • Arch Linux: Falha ao definir a localidade. Corrija seu sistema

  • Não é possível fazer login novamente no ambiente de área de trabalho após executar "setxkbmap il" e fazer logout

  • Quão vinculadas estão as instalações do Linux ao hardware? [duplicado]

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve