8
votes

Sélectionnez les lignes MySQL avec des caractères japonais

Quelqu'un pourrait-il connaître une méthode fiable (avec MySQL ou autre) pour sélectionner des lignes dans une base de données contenant des caractères japonais? J'ai beaucoup de lignes dans ma base de données, dont certaines n'ont que des caractères alphanumériques, dont certains ont des caractères japonais.


4 commentaires

Un simple SELECT Est-ce que le travail, pouvez-vous alors décrire votre tableau et ce que vous faites après le SELECT


Y a-t-il un moyen de sélectionner une ligne contenant un caractère japonais?


Pouvez-vous nous donner la sortie de show create table_name , où name_name est le nom de la table en question? Sur la base de ce qui est là, vous pouvez ou ne pas être capable de le faire.


Haut-parleur japonais ici. En japonais, alors qu'il n'y a que 71 caractères kana, il y a plus de 50 000 caractères kanji. Par conséquent, il n'est probablement pas possible d'écrire une instruction qui correspond à plus de 50 000 caractères japonais différents.


5 Réponses :


0
votes

Comme Teneff a déclaré, utilisez simplement Sélectionnez .

Lors de l'installation de MySQL, utilisez UTIF-8 comme caractères. Ensuite, choisissez utf8_géneral_ci car une collation devrait faire le travail.


0 commentaires

-1
votes

Il y a un nombre limité de caractères japonais. Vous pouvez rechercher ces utilisateurs utilisant

SELECT ...LIKE CONCAT('%',CHAR(0x30ab),'%')


4 commentaires

Y a-t-il un moyen de sélectionner une ligne contenant un caractère japonais?


Vous pouvez combiner tous les caractères d'une requête (pourriez-vous être lent) code Sélectionnez ... comme '% カ%' ou comme '%% ア%' vaut la peine d'essayer est une expression régulière code Sélectionnez ... Regexp '[カア]'


comme '% xxx%' et regexp sont également lents, car ils n'utilisent pas d'index. Dans les deux cas, il s'agit d'une numérisation de table complète


Haut-parleur japonais ici. En japonais, alors qu'il n'y a que 71 caractères kana, il y a plus de 50 000 caractères kanji. Par conséquent, il n'est probablement pas possible d'écrire une instruction qui correspond à plus de 50 000 caractères japonais différents.



0
votes

comme Frosty indiqué, utilisez simplement SELECT.

Recherchez les caractères japonais de valeur les plus bas et les plus élevés des cartes Unicode à http: //www.unicode .org / RoadMaps / BMP / et utilisez REGEXP. Il peut utiliser plusieurs régions de caractères différentes pour obtenir tout le jeu de caractères japonais. Tant que vous utilisez la collation UTF-8 Charset et UTF8_General_CI, vous devriez pouvoir utiliser un REGEXP '[A-GK-NT-Z]' lorsque AG représente une gamme de caractères Unicode à partir des graphiques, KN ​​représente une autre plage, c.


1 commentaires

En fait, je pense que vous voudrez la méthode de collation UTF8_BIN. Cela comparera les octets-sages. Dans UTF-8, cela signifiera qu'une valeur unicode plus élevée se comparera toujours plus tard. De cette façon, vous pouvez simplement rechercher les différentes gammes de caractères japonais dans les cartes Unicode et utiliser le premier et le dernier caractère de chaque gamme à l'intérieur [].



10
votes

règles lorsque vous avez un problème avec des ensembles de caractères:

  1. Lors de la création de la base de données, utilisez l'encodage UTF8: P>

        $str = mb_convert_encoding($str, 'UTF-8', '<put your file encoding here');
        $query = 'SELECT * FROM test WHERE name = "' . $str . '"';
    
  2. Assurez-vous que tous les champs de texte (VARCHAR et TEXT) utilisent UTF-8: P>

    header('Content-Type: text/html; charset=UTF-8');
    
  3. Lorsque vous faites une connexion, faites-le avant de demander / mettre à jour la base de données: p>

    SET NAMES utf8;
    
  4. avec phpmyadmin - choisissez UTF-8 lorsque vous vous connectez. P> li>

  5. Définir la page Web Encodage sur UTF-8 pour vous assurer que toutes les données post / get seront dans UTF-8 (ou vous devrez que la conversion est douloureuse ..). Code PHP (première ligne dans le fichier PHP ou au moins avant toute sortie): p>

    CREATE TABLE _test.test (
      id INT NOT NULL AUTO_INCREMENT,
      name VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE = MyISAM;
    
  6. Assurez-vous que toutes vos questions sont écrites dans le codage UTF8. Si vous utilisez php: p> li> ol>

    6.1. Si PHP prend en charge le code dans UTF-8 - écrivez simplement vos fichiers dans UTF-8. P>

    6.2. Si PHP est compilé sans support UTF-8 - convertissez vos chaînes en UTF-8 comme ceci: p> xxx pré>

    qui devrait le faire fonctionner. P> P>


0 commentaires

2
votes

Suivre la réponse utile Nicksoft, je devais définir le codage sur la connexion de DB pour le faire fonctionner.

& Caractorcoding = utf8

alors les noms de jeu UTF8; semblait être redondant


0 commentaires