Como exibir caracteres ocultos por padrão (ZERO WIDTH SPACE, por exemplo. & # 8203)

197

Acabei de perder parte do meu fim de semana por causa disso ... coringa - espaço de largura zero. Acabei de usar alguns trechos de grupos do Google e não reconheci que há caracteres duplicados, porque a Idea (11) não os mostrava, o que estava causando problemas ao analisar o arquivo de configuração do meu aplicativo ... descobri-o acidentalmente no vi .

Existe alguma maneira de exibir essas coisas no IntelliJ (ou alguma outra maneira de examinar arquivos) sem usar editores externos.

IntelliJ 11 / Mac OS 10.7

editar - amostra

Essas duas linhas parecem idênticas, no navegador e também no Idea. Você pode ver no código da página que, na primeira linha comentada, existe espaço de largura zero oculto entre mysql://e localhost, o que causa problemas. Obviamente, se você espera esse 'coringa', pode tentar usar a pesquisa e substituí-lo, no entanto, ninguém espera o sinal que não deveria estar lá, especialmente se ele não puder vê-lo de nenhuma maneira.

#db.default.url="jdbc:mysql://​localhost/play-fullcalendar"
 db.default.url="jdbc:mysql://localhost/play-fullcalendar"
biesior
fonte
22
Esse personagem deve ser banido por um tratado internacional. É uma arma de grande distração. Perdi um dia inteiro tentando descobrir qual é a causa de um erro misterioso aparecendo no meu console js. Sério, um caractere de largura zero? Essa é uma receita perfeita para problemas. O que o comitê de padrões da UTF estava pensando?
Nick
@ Nick, estou tendo problemas para carregar meu JS (estou recebendo um ponto de interrogação dentro de um diamante, no final do arquivo), e acredito que seja um problema de codificação. Eu recebi um Uncaught SyntaxError: Unexpected token ILLEGALpouco de pesquisa e me levou à idéia de que é um problema oculto de símbolo. Como encontro esse personagem misterioso de largura zero que você está falando? Só para ver se esse é o problema ...
Milkncookiez

Respostas:

359

Não sabe ao certo o que queria dizer, mas você pode ativar e desativar permanentemente os espaços em branco Settings -> Editor -> General -> Appearance -> Show whitespaces.

Além disso, você pode configurá-lo para um arquivo atual apenas em View -> Active Editor -> Show WhiteSpaces.

Editar:

Teve algum tempo livre, pois parece um problema popular, eu havia escrito um plugin para inspecionar o código em busca de tais anormalidades. Ele é chamado de localizador de caracteres de largura zero e você pode tentar .

Vic
fonte
4
ellou 'Vic, obrigado pela resposta. Infelizmente, esta opção não mostra 'espaço de largura zero' mencionado no assunto. Tenho certeza que o personagem existe, porque pode exibi-lo com ie. Vi, mas não consigo vê-lo na Idea: /
biesior 26/03
2
Eu vejo .. Eu acho que nós vamos ter que esperar para CrazyCoder dizer que não é suportado ou algo assim :)
Vic
5
Começando com IntelliJ-14.1 é escondido emSettings -> Editor -> General -> Appearance -> Show whitespaces -> Leading | Inner | Trailing
Rob
4
É possível fazer pontos nos espaços em branco? como em Sublime
OlehZiniak
2
@WillSewell, você pode afetar a cor selecionando e Settings -> Editor -> Color Scheme -> General, nessa categoria, vá para Text -> Whitespaces. Mudei o meu a partir do padrão plano # 505050 para # 404040, e encontrá-los visíveis, mas não distrair
chaserb
81

Uma solução muito simples é procurar caracteres não-ascii no seu arquivo usando uma expressão regular. Isso destacará bem todos os pontos em que são encontrados com uma borda.

Procure [^\x00-\x7F]e marque a caixa para Regex.

O resultado será parecido com este (no modo escuro):

espaço com largura zero tornado visível

Micros
fonte
Thx, na verdade eu aceitei e dei uma recompensa à resposta do Vic por um plug-in que ele criou para resolver o problema, que está vinculado ao final de sua resposta.
biesior
2
Sim, eu vi isso. É bem merecido. Mas, para algumas pessoas, simplesmente fazer essa pesquisa pode ser uma solução muito mais rápida que instalar um plugin.
Micros
eu usei isso em um script php para tornar o conteúdo HTML muito bem formatado para migração para o WordPress:$string = preg_replace( '/[^\x00-\x7F]/', null, $string ); htmlspecialchars_decode( htmlentities( html_entity_decode( $string ) ) );
aequalsb
@Micros. Existe algum editor para janelas que pesquise arquivo (s) por caracteres não-ascii usando uma expressão regular? No meu caso, preciso encontrar '\ u11891' para corrigir esse tipo de erro: SintaxeErro: caractere inválido '\ u11891
user1788736
@ user1788736 Sim, muitos editores de destaque de sintaxe suportam isso. Você pode usar Sublime Text, ou um dos aplicativos JetBrains, como WebStorm ou IntelliJ.
quer