2010-10-16 7 views
3

Je travaillais une fois sur une application Java traitant du traitement Unicode - et comme d'habitude pour commencer, j'écris du code et le teste, puis je commente le code de travail et j'ajoute de nouvelles lignes., Et ceci le processus se poursuit jusqu'à ce que je trouve la solutionCommentaire Illegal Unicode Sequences

Le problème exact que j'ai eu était de commenter les chaînes Unicode illégales. Unicode ne fonctionnait pas et je voulais juste le commenter ... à ma grande surprise, ça ne marcherait pas.

Exemple de code:

class UnicodeTester{ 
//char someCharacter = "\ux13d"; 
} 

javac UnicodeTester.java 

UnicodeTester.java:2: illegal unicode escape 
//char someCharacter = "\ux13d"; 
          ^
1 error 

est-il un moyen où je peux commenter des séquences unicode illégales ?? J'ai lu la spécification du langage Java 2.2 & 2.3, La grammaire lexicale est appliquée avant la grammaire syntaxique. PÉRIODE. Mais quelle est la solution de contournement la plus efficace autre que les supprimer du code source?

Répondre

1

Vous pouvez travailler autour d'elle en insérant un caractère d'espace après la barre oblique inverse:

//char someCharacter = "\ ux13d"; 
+0

hmm .. cela fonctionnerait pour un seul caractère .. Je voulais dire que s'il y a une longue chaîne comme \ ux13d \ uy14x \ u ..... les changer à chaque \ serait une mauvaise idée .. Merci. – Sekhar

+1

@ user331225, dans le cas de longues fixations qui doivent être "échappées", je choisirais un motif unique (comme '\ /') et j'utiliserais la substitution dans l'EDI pour remplacer toutes les occurrences à la fois, et revenir à plus tard. – rsp

1

Cela arrive parfois quand besoin d'intégrer quelque chose en utilisant le code PHP en Javascript, comme une valeur entière, et le besoin de commenter quelques-uns valeur illégale temporairement mais PHP donne toujours une erreur car le code PHP est exécuté avant que le code JS soit généré et traité comme un commentaire.

En général, je fais quelque chose comme

class UnicodeTester{ 
//char someCharacter = "\\ux13d"; // illegal 
} 

pour que je puisse encore grep pour \u plus tard ou grep pour illegal.