Cómo mostrar caracteres ocultos de forma predeterminada (ESPACIO ANCHO CERO, es decir, & # 8203)

197

Acabo de perder parte de mi fin de semana debido a esto ... bromista: espacio de ancho cero. Acabo de usar algunos fragmentos de grupos de google y no reconocí que hay caracteres duplicados, porque Idea (11) no los mostró, lo que estaba causando problemas al analizar el archivo de configuración de mi aplicación ... Lo descubrí accidentalmente en vi .

¿Hay alguna manera de mostrar tales cosas en IntelliJ (o alguna otra forma de examinar archivos) sin usar editores externos?

IntelliJ 11 / Mac OS 10.7

editar - muestra

Estas dos líneas se ven idénticas, en el navegador y también en Idea. Puede ver en el código de la página que en la primera línea comentada hay un espacio oculto de ancho cero entre mysql://y localhost, lo que causa problemas. Por supuesto, si espera ese 'bromista', puede intentar usar la búsqueda y reemplazarlo, sin embargo, nadie espera el signo que no debería estar allí, especialmente si no puede verlo de ninguna manera.

#db.default.url="jdbc:mysql://​localhost/play-fullcalendar"
 db.default.url="jdbc:mysql://localhost/play-fullcalendar"
biesior
fuente
22
Este personaje debería estar prohibido por un tratado internacional. Es un arma de distracción masiva. Perdí un día entero tratando de averiguar cuál es la causa de un misterioso error que aparece en mi consola js. En serio, un personaje de ancho cero? Esa es una receta perfecta para los problemas. ¿Qué estaba pensando el comité de estándares de UTF?
Nick
@ Nick, tengo problemas para cargar mi JS (obtengo un signo de interrogación dentro de un diamante, al final del archivo), y creo que es un problema de codificación. Tengo Uncaught SyntaxError: Unexpected token ILLEGALun poco de investigación y me llevó a la idea de que es un problema de símbolos ocultos. ¿Cómo encuentro este misterioso personaje de ancho cero del que estás hablando? Solo para ver si ese es el problema ...
Milkncookiez

Respuestas:

359

No estoy seguro de lo que quiso decir, pero puede activar y desactivar permanentemente los espacios en blanco Settings -> Editor -> General -> Appearance -> Show whitespaces.

Además, puede configurarlo para un archivo actual solo en View -> Active Editor -> Show WhiteSpaces.

Editar:

Tenía algo de tiempo libre ya que parece un problema popular, había escrito un complemento para inspeccionar el código en busca de tales anomalías. Se llama localizador de caracteres de ancho cero y puedes probarlo .

Vic
fuente
44
ellou 'Vic, gracias por responder. Desafortunadamente, esta opción no muestra el "espacio de ancho cero" mencionado en el tema. Estoy seguro de que el personaje existe, porque puede mostrarlo con ie. Vi, pero no puedo verlo en Idea: /
biesior
2
Ya veo ... supongo que tendremos que esperar a que CrazyCoder diga que no es compatible o algo así :)
Vic
55
Comenzando con IntelliJ-14.1 está oculto enSettings -> Editor -> General -> Appearance -> Show whitespaces -> Leading | Inner | Trailing
Rob
44
¿Es posible hacer que los puntos en los espacios en blanco sean licitantes? como en Sublime
OlehZiniak
2
@WillSewell, puede afectar el color seleccionando Settings -> Editor -> Color Scheme -> General, luego dentro de esa categoría, vaya a Text -> Whitespaces. Cambié el mío del primer plano predeterminado # 505050 a # 404040, y los veo visibles pero no distraen
chaserb
81

Una solución muy simple es buscar en su (s) archivo (s) caracteres no ascii usando una expresión regular. Esto resaltará muy bien todos los lugares donde se encuentran con un borde.

Busque [^\x00-\x7F]y marque la casilla Regex.

El resultado se verá así (en modo oscuro):

espacio de ancho cero visible

Micros
fuente
Gracias, en realidad acepté y di una recompensa por la respuesta de Vic por un complemento que creó para resolver el problema, que está vinculado al final de su respuesta.
biesior
2
Sí, lo vi. Es bien merecido. Pero para algunas personas, simplemente hacer esta búsqueda podría ser una solución mucho más rápida que instalar un complemento.
Micros
Utilicé esto en un script php para crear contenido HTML muy bien formateado para la migración a WordPress:$string = preg_replace( '/[^\x00-\x7F]/', null, $string ); htmlspecialchars_decode( htmlentities( html_entity_decode( $string ) ) );
aequalsb
@Micros. ¿Hay algún editor para Windows que busque en los archivos caracteres no ascii utilizando una expresión regular? En mi caso, necesito encontrar '\ u11891' para corregir este tipo de errores: SyntaxError: Carácter no válido '\ u11891
user1788736
@ user1788736 Sí, muchos editores de resaltado de sintaxis lo admiten. Puede usar Sublime Text, o una de las aplicaciones de JetBrains, como WebStorm o IntelliJ.
Micros