WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   MySQL sökningar med lite mera udda tecken (https://www.wn.se/forum/showthread.php?t=8085)

Robert 2005-05-23 11:10

Har tvingats kliva in i MySQL-träsket (hehe) pga val av webhotell och har en liten snabb fråga:

Hur hanterar MySQL exempelvis apostrofer, ansanger etc? (alltså typ é è)
Jag undrar då jag vet att folk exempelvis inte söker så ofta med sådana tecken (exempelvis Cafe istället för det riktiga Café).

Så, måste jag tvätta bort dessa tecken innan jag lagrar detta, eller klarar en select-sats i MySQL att matcha båda förekomsterna per automatik? Eller hur har ni löst det hela?

grazzy 2005-05-23 11:18

Det beror på vad du väljer för collation när du lagrar datan helt enkelt, http://dev.mysql.com/doc/mysql/en/charset.html

Det skall fungera att söka direkt, default nuförtiden är dock UTF-8 (iaf på mina servrar), så det är bara att översätta alltihopa till UTF-8 så löser det biffen. Sen så buggar det satan ändå. :)

grazzy 2005-05-23 11:22

(Eller ja, UTF-8 blir det kanske av perls API eller nåt, det blir UTF-8 hela tiden iaf, men det gör oftast inte så mycket :)).

Robert 2005-05-23 11:27

Så, vad menar ni egentligen... =)

Datat ska vara sökbart i just denna tabell och om jag lagar ordet "Café" så ska det dyka upp om folk söker på "Cafe"... så sker detta per automatik om jag väljer rätt collation eller?

grazzy 2005-05-23 13:42

Kod:

mysql> show create table test\G
*************************** 1. row ***************************
    Table: test
Create Table: CREATE TABLE `test` (
 `id` int(11) NOT NULL auto_increment,
 `title` varchar(255) default NULL,
 PRIMARY KEY (`id`)
) TYPE=MyISAM
1 row in set (0.00 sec)

Kod:

mysql> insert into test values(7,'café');
Query OK, 1 row affected (0.00 sec)

mysql> select * from test where title = 'cafe';
+----+-------+
| id | title |
+----+-------+
| 7 | café |
+----+-------+
1 row in set (0.00 sec)

mysql> select * from test where title like 'cafe';
+----+-------+
| id | title |
+----+-------+
| 7 | café |
+----+-------+
1 row in set (0.00 sec)

Kod:

mysql> show variables like '%char%'\G
*************************** 1. row ***************************
Variable_name: character_set
    Value: latin1
*************************** 2. row ***************************
Variable_name: character_sets
    Value: latin1 dec8 dos german1 hp8 koi8_ru latin2 swe7 usa7 cp1251 danish hebrew win1251 estonia hungarian koi8_ukr win1251ukr greek win1250 croat cp1257 latin5
*************************** 3. row ***************************
Variable_name: convert_character_set
    Value:
3 rows in set (0.00 sec)

Så, "ja".

grazzy 2005-05-23 13:43

Dock: så fort man börjar bli lite seriös med sånt där, är det mycket enklare att använda utf8 och alltid konvertera sina strängar fram och tillbaka - html, mysql, php/perl/applikation stödjer det olika. UTF8 stödjs likadant överallt.

Robert 2005-05-23 19:34

Ok, får tacka för din hjälp. Låter bra det där. =)


Alla tider är GMT +2. Klockan är nu 02:36.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson