Décoder une chaine de caractère

Décoder une chaine de caractère - PHP - Programmation

Marsh Posté le 03-08-2010 à 11:17:46    

Bonjour,
 
dans une appli, je me retrouve avec des strings comme ça:
$string = '%u65E5%u5E38%u30DE%u30F3%u30C4%u30FC%u30DE%u30F3%u82F1%u4F1A%u8A71';
C'est censé être des caractères japonais provenant d'une db MSSQL.
Comment je peux la décoder pour être lisible ?

Reply

Marsh Posté le 03-08-2010 à 11:17:46   

Reply

Marsh Posté le 06-08-2010 à 11:11:15    

Pour info  [:calahad]  

Code :
  1. $string = '%u65E5%u5E38%u30DE%u30F3%u30C4%u30FC%u30DE%u30F3%u82F1%u4F1A%u8A71';
  2. $string = preg_replace("/%u([0-9a-f]{2,4})/i","&#x\\1;",$string);
  3. echo $string;

Reply

Marsh Posté le 06-08-2010 à 14:05:20    

C'est surtout de l'utf-8. Faut donc que ton navigateur ait une police de caractère capable d'afficher les caractères japonais, ce qui ne devrait pas poser pb ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 06-08-2010 à 14:32:58    

Faut quand même la décoder avant de l'afficher.

Reply

Marsh Posté le 06-08-2010 à 15:20:58    

est-ce que cette lib ne pourrait pas t'aider : http://www.php.net/manual/fr/book.mbstring.php
 
Perso, j'ai jamais bosser autrement qu'avec du iso-8859-1 donc je ne pourrais pas t'aider beaucoup plus mais je serais intéressé de connaître la solution.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 08-08-2010 à 02:29:05    

c'est de l'utf-16 encodé par du javascript, si tu veux le voir sans les entités ca serait

 
Code :
  1. $string = '%u65E5%u5E38%u30DE%u30F3%u30C4%u30FC%u30DE%u30F3%u82F1%u4F1A%u8A71';
  2. $string = preg_replace("/%u([0-9a-f]{2,4})/ie","pack('H4','$1')",$string);
  3. echo iconv('UTF-16', 'UTF-8', $string);
 

le mieux ca serais des les décodés en javascript avant


Message édité par stealth35 le 08-08-2010 à 04:53:34
Reply

Marsh Posté le 09-08-2010 à 10:26:59    

wtf  [:what has been seen]  
Et quelle est la signification du 'H4' ?
Et aussi, il n'y a pas de perte d'information quand on passe de l'UTF-16 en UTF-8 ?

Reply

Marsh Posté le 09-08-2010 à 20:44:23    

pour le H4 c'est veux dire que c'est en hexa (be) avec 4 valeur
au niveau de la perte d'info non puisque ton texte est a la base en utf-8, c'est juste que javascript bosse en UTF-16, mais j'ai du mal a reproduire ton truc, ca se passe comment au niveau de ton code ? c'est un formulaire en ajax ?

Reply

Marsh Posté le 10-08-2010 à 10:37:35    

hexa be ?  [:cerveau skyzor]  
Alors d'où ça vient, j'en n'ai aucune idée. C'est une string dans une table MSSQL.
Je vais tenter de trouver ce qui a mis ces strings la-bas :d

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed