Il n'est pas une réponse entière, mais ... quand je Copy'n'Paste les caractères Unicode « चौरेउत्तमयादव » puis utiliser quelques outils pour analyser ce qui est là, je ne vois pas d'espace:
echo "चौरेउत्तमयादव " | odx
Cela produit un vidage hexadécimal des données; il y a un blanc à la fin, mais aucun au milieu.
0x0000: E0 A4 9A E0 A5 8C E0 A4 B0 E0 A5 87 E0 A4 89 E0 ................
0x0010: A4 A4 E0 A5 8D E0 A4 A4 E0 A4 AE E0 A4 AF E0 A4 ................
0x0020: BE E0 A4 A6 E0 A4 B5 20 0A ....... .
0x0029:
Et la deuxième commande décode les données UTF-8:
echo "चौरेउत्तमयादव " | utf8-unicode
Il produit:
0xE0 0xA4 0x9A = U+091A
0xE0 0xA5 0x8C = U+094C
0xE0 0xA4 0xB0 = U+0930
0xE0 0xA5 0x87 = U+0947
0xE0 0xA4 0x89 = U+0909
0xE0 0xA4 0xA4 = U+0924
0xE0 0xA5 0x8D = U+094D
0xE0 0xA4 0xA4 = U+0924
0xE0 0xA4 0xAE = U+092E
0xE0 0xA4 0xAF = U+092F
0xE0 0xA4 0xBE = U+093E
0xE0 0xA4 0xA6 = U+0926
0xE0 0xA4 0xB5 = U+0935
0x20 = U+0020
0x0A = U+000A
Ainsi, il semble que votre problème est peut-être avec l'entrée 'toEscapedUnicode' plutôt qu'avec sa sortie.
En outre, il semble que ce que je Copy'n'Paste de la question ne correspond pas à ce que vous dites est dans la chaîne:
Yours Mine
\u0938 U+091A
\u0941 U+094C
\u0916 U+0930
\u091A U+0947
\u0948 U+0909
\u0928 U+0924
\u093E U+094D
\u0928 U+0924
\u0940 U+092E
\u0020
\u0930 U+092F
\u0940 U+093E
\u091D U+0926
\u0941 U+0935
\u092E
\u0932
\u0020
\u091C
\u093F
\u0935
\u0924
Ainsi, le texte collé ne correspond pas à la traduction réclamée pour d'autres raisons aussi.
Je crois que la chaîne Unicode que vous spécifiez doit ressembler à:
सुखचैनानी रीझुमल जिवतराम
J'ai utilisé un fichier contenant les valeurs que vous prétendiez, moins les \u
préfixes et 0020 à la place de les blancs:
0938
0941
0916
091A
0948
0928
093E
0928
0940
0020
0930
0940
091D
0941
092E
0932
0020
091C
093F
0935
0924
0930
093E
092E
Et puis j'ai utilisé ce script Perl home-brew pur pour générer la chaîne UTF-8 que je propose comme l'équivalent de votre chaîne Unicode échappée. Je suis sûr qu'il existe des mécanismes disponibles dans Perl pour le faire autrement (en utilisant des modules liés à Unicode), mais cela a fonctionné pour moi. Il serait moins bavard si je ne quittais pas le code de débogage là-bas):
#!/bin/perl -w
use strict;
use constant debug => 0;
while (<>)
{
chomp;
my $i = hex;
printf STDERR "0x%04X = %4d\n", $i, $i if debug;
if ($i < 0x100)
{
# 1-byte UTF-8
printf STDERR " 0x%02X (%3d)\n", $i, $i if debug;
printf "%c", $i;
}
elsif ($i < 0x800)
{
# 2-byte UTF-8
my($b1) = 0xC0 | (($i >> 6) & 0xFF);
my($b2) = 0x80 | ($i & 0x3F);
printf STDERR " 0x%02X (%3d)\n", $b1, $b1 if debug;
printf STDERR " 0x%02X (%3d)\n", $b2, $b2 if debug;
printf "%c%c", $b1, $b2;
}
elsif ($i < 0x10000)
{
# 3-byte UTF-8
my($b1) = 0xE0 | (($i >> 12) & 0xFF);
my($b2) = 0x80 | (($i >> 6) & 0x3F);
my($b3) = 0x80 | ($i & 0x3F);
printf STDERR " 0x%02X (%3d)\n", $b1, $b1 if debug;
printf STDERR " 0x%02X (%3d)\n", $b2, $b2 if debug;
printf STDERR " 0x%02X (%3d)\n", $b3, $b3 if debug;
printf "%c%c%c", $b1, $b2, $b3;
}
else
{
# 4-byte UTF-8 or error
die "Oh bother!";
}
}
print "\n";
Vous pouvez remplir le UTF-8 4 octets et des trucs de gestion des erreurs. Je ne diagnostique pas les séquences UTF-8 invalides (notamment les substituts UTF-16), donc si vous placez des faux points de données Unicode, vous obtiendrez de fausses valeurs UTF-8 hors du script.Si vous avez besoin d'en savoir plus à ce sujet, lisez le chapitre 3 du livre Unicode (disponible en téléchargement - en tant que chapitre - de Unicode.org) ou le FAQ - UTF-8, UTF-16, UTF-32 and BOM.
Vous avez probablement besoin d'identifier le langage de programmation que vous utilisez (le script est Devanagiri). Avez-vous écrit la fonction 'toEscapedUnicode'? Si c'est le cas, nous aurons besoin de le voir pour avoir une chance de déterminer quel est le problème. –