En supprimant les caractères de contrôle à partir d'une chaîne UTF-8
J'ai trouvé cette question, mais elle supprime tous les valide utf-8
personnages aussi (me renvoie une chaîne vide, alors qu'il y a de valable utf-8
caractères plus les caractères de contrôle). Comme je l'ai lu à propos de utf-8
, il n'y a pas une gamme spécifique pour control characters
et chaque personnage a sa propre control characters
.
Comment puis-je modifier ci-dessus solution pour ne supprimer control characters
?
Vous savez, avec quelques lignes de code (ce qui est exactement une chaîne utf-8?) et un petit échantillon de ce texte, ce serait de commencer à ressembler à une vraie question.
véritable chaîne en arabe, est
Comment définir les caractères de contrôle? Ceux avec codepoint
J'ai trouvé il n'est pas sur les vrais caractères de contrôle. N'importe quel caractère spécial comme
véritable chaîne en arabe, est
utf-8
chaîne par un point-virgule et les caractères de contrôle. J'ai fourni un lien vers les plus similaires question: stackoverflow.com/questions/20762/...Comment définir les caractères de contrôle? Ceux avec codepoint
<32
?J'ai trouvé il n'est pas sur les vrais caractères de contrôle. N'importe quel caractère spécial comme
"
, ;
etc fait problème. Je suis en train de définir la chaîne de HttpHeader
mais obtenir cette exception: Specified value has invalid Control characters
OriginalL'auteur Xaqron | 2011-07-23
Vous devez vous connecter pour publier un commentaire.
Je pense que le code suivant fonctionne pour vous:
Specified value has invalid Control characters.
exception, tout en essayant de définir la chaîne deHttpHeader
.Il n'a pas de travail pour tous les caractères de contrôle. J'ai changé la condition de
!char.IsControl(ch)
et maintenant, il doit travailler pour vous.J'ai trouvé le problème, il n'est pas sur le réel
control characters
. N'importe quel caractère spécial comme\"
,;
etc fait problème. Je n'ai aucune idée de comment le supprimer à partir d'unutf-8
chaîne.Qu'est ce qu'un spécial caractère dans votre cas? Non alphanumérique? Vous devez définir ces caractères spéciaux et de modifier l'état.
utilisation
char.IsLetter()
méthode.OriginalL'auteur Centro
C'est comment je roule:
Cette opération supprime toutes les 31 premiers caractères de contrôle. La prochaine valeur hexadécimale de \u001F est \u0020 AKA l'espace. Tout ce qui est avant tout le saut de ligne et nulle de non-sens.
De me croire sur les personnages: http://donsnotes.com/tech/charsets/ascii.html
OriginalL'auteur BritishDeveloper
Si vous prévoyez d'utiliser la chaîne comme une chaîne de requête, vous devez envisager d'utiliser la
Uri.EscapeUriString()
ouUri.EscapeDataString()
avant de l'envoyer.Remarque: Vous pourriez encore besoin de sortir quelque chose de char.IsControl() en premier?
OriginalL'auteur Plater