Sökning på åäö fungerar ej

Permalänk
Medlem

Sökning på åäö fungerar ej

Tjena!

Jag arbetar med en sida som heter www.windowsguiden.se och på den har jag en sökfunktion som fungerar fullt utan FÖRUTOM sökningar på å, ä eller ö. Jag använder mig av en sql databas med kollationeringen latin1_swedish_ci. Charseten på sidan är satt till UTF-8.

Innan jag flyttade sidan till .se domänen så använde jag mig av min skolas server sql databas. Då fungerade allt perfekt. När det sedan var dags att lansera sidan så exporterade jag tabellen till mitt nya webbhotells databas. Det var då detta inträffade.

Grymt många tack till den som lyckas lösa detta. Känns ju som att det är ett enkelt problem som är lätt att åtgärda.

//mattias

Visa signatur

MSI 770-C45 | Amd Athlon x4 635 | Asus Radeon Hd 5770 1GB | Corsair 2x2gb 1333mhz Value Select | Chieftec Smart series 550W | Western Digital Caviar 500GB 16MB 7200rpm |

Logitech G9x | Steelseries 6G V2 | Razer Carcharias

Permalänk
Medlem

Gissar på att den försöker söka efter strängar kodade i UTF-8 i en databas som innehåller strängar kodade i ISO/IEC 8859-1 och därför misslyckas med att hitta något. Att köra UTF-8 i databasen också vore nog det bästa.

Visa signatur

Assembly är ett högnivåspråk.

Permalänk
Medlem

men ändrade kollationeringen till swedish utf8 i databasen men fungerade inte. Men läste någonstans att kolaltioneringen inte har med kodningen att göra. Stämmer det?

Visa signatur

MSI 770-C45 | Amd Athlon x4 635 | Asus Radeon Hd 5770 1GB | Corsair 2x2gb 1333mhz Value Select | Chieftec Smart series 550W | Western Digital Caviar 500GB 16MB 7200rpm |

Logitech G9x | Steelseries 6G V2 | Razer Carcharias

Permalänk
Medlem

Tror att man måste öppna MySQL kopplingen med UTF8 också, såhär(om du kör PHP):
mysql_query("SET NAMES utf8");
mysql_query("SET CHARACTER SET utf8");

Visa signatur

Citera eller nämn gärna mig (@ToJa92) om du svarar på något jag skrivit.
Uppskattar du eller blir hjälpt av ett inlägg jag skrivit är jag tacksam om du gillar det.

Permalänk
Medlem

Det du behöver göra i din söknings kod är att använda:

<?PHP /* innan datan skickas in till SQL query så gör vi om den tilll ISO-8859-1 från UTF-8 */ $minIsoData = utf8_decode($utfDataAttDecoda); /* $minIsoData är nu i ISO-8859-1 format klart att användas i databas queryn */ ?>

Du kan då bespara mycket trubbel genom att använda:
http://se.php.net/manual/en/function.utf8-decode.php
http://se.php.net/manual/en/function.utf8-encode.php

Beroende på om du vill:

UTF-8 data ---> ISO-8859-1 data
ISO-8859-1 data ---> UTF-8 data

Jag kör själv med ISO-8859-1 format på data i min MySQL databas och UTF-8 encoding på sidorna.

Lycka till.

Visa signatur

Fractal Design Arc Svart | MSI Z68A-GD55 G3 REV B3 | Intel® Core i7 2600K, 3.4GHz, 8MB | Corsair 16GB (4x4096MB) CL9 1600Mhz VENGEANCE LP | MSI GeForce GTX 670 | Phanteks PH-TC14PE CPU Cooler (vit) | Corsair Power Supply 650W TX M, Modular, ATX, PS/2 | SSD (okänd tillverkare) + 2 äldre SATA2 diskar på 750 Gb, 350 gb. | OS: Microsoft Windows 10 home.

Permalänk
Medlem

Jag löste det ändå. Jag ändrade bara kodningen på alla sidor till ISO-8859-1 så fick jag pilla lite i databasen ochså så fungerade det sen. tack ändå för alla svar!

Visa signatur

MSI 770-C45 | Amd Athlon x4 635 | Asus Radeon Hd 5770 1GB | Corsair 2x2gb 1333mhz Value Select | Chieftec Smart series 550W | Western Digital Caviar 500GB 16MB 7200rpm |

Logitech G9x | Steelseries 6G V2 | Razer Carcharias

Permalänk
Medlem
Skrivet av Mitander:

Jag löste det ändå. Jag ändrade bara kodningen på alla sidor till ISO-8859-1 så fick jag pilla lite i databasen ochså så fungerade det sen. tack ändå för alla svar!

Inte bästa lösningen enligt mig, eftersom att man börjar rekommendera att köra med UTF-8 allt mer. Själv så har jag alltid kört med vad ToJa92 föreslog, det har funkat för mig. Men om du känner dig nöjd så är det väl dumt att byta lösning.