0
votes

Java mysql octet de chaque char

Bonjour désolé si ce message est idiot mais j'ai besoin de savoir si j'ai eu une corde à Java comme ceci. XXX PRE>

Je veux connaître la valeur INT du char ou de la Char Combien d'octets utiliseraient dans un mysql. P>

S'il vous plaît soyez gentil merci beaucoup. Et oui j'ai fait quelques recherches. p>

quelque chose comme ça. P>

51 3 would use X bytes in a mysqlTable{X}
32   would use X bytes in a mysqlTable{X}
67 C would use X bytes in a mysqlTable{X}
100 d would use X bytes in a mysqlTable{X}
115 s would use X bytes in a mysqlTable{X}
32   would use X bytes in a mysqlTable{X}
70 F would use X bytes in a mysqlTable{X}
114 r would use X bytes in a mysqlTable{X}
233 é would use X bytes in a mysqlTable{X}
65533 � would use X bytes in a mysqlTable{X}
68 D would use X bytes in a mysqlTable{X}
233 é would use X bytes in a mysqlTable{X}
65533 � would use X bytes in a mysqlTable{X}
82 R would use X bytes in a mysqlTable{X}
105 i would use X bytes in a mysqlTable{X}
99 c would use X bytes in a mysqlTable{X}
32   would use X bytes in a mysqlTable{X}
67 C would use X bytes in a mysqlTable{X}
104 h would use X bytes in a mysqlTable{X}
111 o would use X bytes in a mysqlTable{X}
112 p would use X bytes in a mysqlTable{X}
105 i would use X bytes in a mysqlTable{X}
110 n would use X bytes in a mysqlTable{X}
32   would use X bytes in a mysqlTable{X}
40 ( would use X bytes in a mysqlTable{X}
77 M would use X bytes in a mysqlTable{X}
97 a would use X bytes in a mysqlTable{X}
115 s would use X bytes in a mysqlTable{X}
116 t would use X bytes in a mysqlTable{X}
101 e would use X bytes in a mysqlTable{X}
114 r would use X bytes in a mysqlTable{X}
112 p would use X bytes in a mysqlTable{X}
105 i would use X bytes in a mysqlTable{X}
101 e would use X bytes in a mysqlTable{X}
99 c would use X bytes in a mysqlTable{X}
101 e would use X bytes in a mysqlTable{X}
115 s would use X bytes in a mysqlTable{X}
41 ) would use X bytes in a mysqlTable{X}


3 commentaires

Stackoverflow .com / questions / 5078314 / ...


Vous êtes juste une petite chose déroutante à mon avis puisque vous demandez à Java combien d'octets mysql utilisera pour une chaîne. Les octets MySQL utilisent dépendent du codage de champ dans la DB


salut s'il vous plaît voir ma question modifiée merci.


3 Réponses :


0
votes

de MySQL Référencez:

https://dev.mysql.com/doc/refman /8.0/fr/char.html

Si vous déclarez «caractère», utilisez le même numéro quel que soit le nombre de caractères de la chaîne. Au lieu de cela, vous utilisez "Varchar" qui dépend de la longueur spécifiée.

Par exemple la chaîne:

  • "mynastyString" en caractères (13) utilisez 13 octets
  • "mynaststring" en caractères (20) utilisez 20 octets
  • "mynastystring" à Varchar (13) Utilisez 13 octets
  • "mynastyString" à Varchar (20) Utilisez 13 octets

1 commentaires

Salut Matteo mais je veux savoir combien d'octets chaque caractère consumerait que je veux dire que m utiliserait 1 Y utiliserait aussi 1 mais je veux savoir quand un charcuter à l'intérieur de MyString consommerait plus de 1 octet



3
votes

Je veux dire chaque valeur aka car combien d'octets utiliseront dans mysql parce que j'utilise la classement latin1_swedish_ci, je dois faire une validation au cas où aucun personnage ne correspondait pas à ma table

mysql "latin1" est un Version modifiée < / a> de Windows-1252 , ce qui signifie qu'il inclut tous les caractères de Windows-1252 , et définit également des mappages pour les quelques caractères Windows-1252 feuilles non définies:

Pour les entrées "indéfinies" dans CP1252, MySQL traduit 0x81 sur Unicode 0x0081, 0x8D à 0x008D, 0x8F à 0x008F, 0x90 à 0x0090 et 0x9D à 0x009D.

Je ne m'attends pas à ce que Java ait une assistance directe pour "MySQL Latin1" car ce n'est pas un jeu de caractères standard. Donc, pour chaque personnage, vous pouvez vérifier si c'est

  • Dans la plage U + 0000 - U + 007F (ASCII)
  • dans la plage U + 00a0 - U + 00FF (où CP1252 et ISO Latin-1 coïncide)
  • L'une des personnages Windows-1252 cartes vers la plage 0x80 - 0x9f (voir le page wikipedia )
  • U + 0081, U + 008D, U + 008F, U + 0090, ou U + 009D

3 commentaires

Salut joni merci mate pouvez-vous donner un exemple de caractère qui utiliserait plus de 1 octet dans un Latin1


Il n'y a pas de tel caractère, latin 1 est un codage d'octets unique. Tous 256 caractères informatiques sont codés avec un octet


ISO-8859-1, Latin-1, comme il n'a que 256 valeurs: Java convertira d'autres caractères Unicode en ? , un espace réservé. Souvent, l'espace réservé sera comme ci-dessus. Peut-être utile: string.getbytes ("Windows-1252") - pour ceux-ci? S.



0
votes

Le nombre d'octets par caractère dans votre DB ne dépend pas de la manière dont votre chaîne stockée dans Java ou tout autre client écrit à votre DB. Cela dépend de l'ensemble de caractères défini pour vous DB, votre table ou une colonne spécifique. Une fois la chaîne reçue par dB, elle est convertie en dB / table de caractères définie par la table / colonne. Donc, juste pour répondre à votre question: Charset Latin1 contient toujours 1 octet par caractère. BTW Latin1 est mieux connu sous le nom de ISO-8859-1 et est définitivement un très standard de caractères et définitivement soutenu par Java. Voir Info sur les caractréets ici .

aussi je recommanderais Pour passer à une unité de caractères Unicode qui soutient tous les caractères dans toutes les langues. Les ordinateurs sont des ordinateurs utiles (peut allouer un nombre différent d'octets par char (1 à 3 si je me souviens bien) ou UTF-16 (toujours 2 octets par char). P>

sur le côté de Java à analyser vos cordes et diagnostiquent des problèmes liés à brandie, je suggérerais une bibliothèque open source Mgntutils (écrit par moi) qui a une classe utilitaire StringUnicodeenCoderDecoder. Cette classe fournit des méthodes statiques convertissant n'importe quelle chaîne en séquence Unicode Vise-Versa. Très simple et utile. Pour convertir String Vous venez de faire: P>

String codes = StringUnicodeEncoderDecoder.encodeStringToUnicodeSequence(myString);


0 commentaires