Just nu i M3-nätverket
Gå till innehåll

AJAX vs ÅÄÖ (PHP)


Pumafliff

Rekommendera Poster

Hej,

 

Jag vet att finns spaltmeter att läsa om att AJAX-metoden har problem med bland annat ÅÄÖ i datat som hämtas ur mysql-databaser. Har även läst många trådar och också hittat ett sätt som funkar för mig.

 

Dock är ju en del av trådarna gamla, och den här utvecklingen kan ju ske rätt fort så jag undrar om ngn kan ge ett relativt enkelt up-to-date-svar vilket sätt som är det "bästa" eller mest universella eller vad man nu kan kalla det när det gäller att;

- via AJAX skriva till en mysql-databas och få med ÅÄÖ

- via AJAX hämta från en mysql-databas och echo'a ut ÅÄÖ på en php-sida

 

Skall man sätta charset, skall man köra encode-decode etc etc.

 

Följdfråga: Om det smartaste är att decoda vid utskrift (echo), och om man hämtar data ur säg 10 tabellrader i en databas. Skulle man då kunna lägga in alla raders textinfo i en array och sedan koda hela arrayen som utf-8 för att slippa lägga till decode-texten vid varje echo-kommando?

 

tack på förhand.

 

Länk till kommentar
Dela på andra webbplatser

Se till att alla sidor, kopplingar etc har samma teckenkodning.

utf-8 rekommenderar jag överallt.

Glöm inte databasen, kollalitionen(?) och kopplingen.

Sidorna skall sparas som utf-8, det skall vara angivet i meta-tagg samt vara definierat överst i din sida som php.

 

 

Länk till kommentar
Dela på andra webbplatser

Det verkar som om en noob behöver mer hjälp här...

 

Ställer frågan först så ska jag berätta senare vad jag gjort.

När du säger

Glöm inte databasen, kollalitionen(?) och kopplingen.

Vad menar du med kopplingen? har testat att lägga till COLLATE till min mysql-fråga men då svarar inte databasen med någonting alls, oavsett vad jag skriver efter COLLATE. Jag är dock rädd för att frågan inte ställs riktigt, och att mysql tolkar frågen fel.

Min sql-fråga är:

$sql="SELECT link FROM news2";

men har testat med

$sql="SELECT link FROM news2 COLLATE utf8_unicode_ci";

Det jag misstänker i min senare fråga är att den letar efter en rad som heter "news2 COLLATE utf8_unicode_ci" vilket inte finns. Hittade exemplet på en MySQL-sida men när PHP ställer frågan kanske det måste fnuttas ngstans som jag missat. Har testat att enkel-fnutta runt 'news2', men med samma resultat att inget hämtas alls.

 

Det jag gjort innan är att ha backat några steg och gjort saker från början för att lära mig och samtidigt debugga lite:

Först o främst tog det någon timme innan jag insåg att det var tvunget att vara utf8 utan BOM som filerna skulle sparas i. Hur som helst så har jag nu testat/läst mig till hur sambandet mellan filformat, php-header och html meta tag funkar.

 

Så vad jag har nu är en php-fil kodad och sparad i utf8 utan BOM.

En PHP-header längst upp på sidan som anger charset=utf-8 (kollation ej angiven dock)

HTML Meta TAG inom <HEAD></HEAD> som anger charset=utf8 (även här utan kollation)

(jag blandar html och php i php-filen... problem??)

 

På sidan har jag sedan gjort ett anrop till databasen, en databas som jag för övrigt gjort igår helt ny (för att slippa gamla inställningar), där databasen i sig har kollation=utf8_unicode_ci.

Tabellen jag anropar har kollation=utf8_unicode_ci.

Raden jag anropar i tabellen har kollation=utf8_unicode_ci.

på phpMyAdmin's förstasida anges utf8_unicode_ci som "kollation för MySQL-uppkoppling"

På samma sida anges UTF-8 Unicode (utf8) som MySQL teckenuppsättning.

 

Med dessa inställnigar visas trots det inte de Å, Ä eller Ö som står i databasfältet för den tabellrad jag hämtar data från när jag echo'ar ut det på min php-sida...

 

Nåt jag missat eller inte förstått som ni kan se?

Jag vet att vi inte snackar AJAX längre men ville behålla samma tråd för det syftar till att debugga AJAX-delen...

 

Länk till kommentar
Dela på andra webbplatser

Jag har upplevt att även ifall man gjort rätt vid skapande av databas (och mycket tack vare att webbhotellen satt iso-8859-1-standard för databasen) att data inte visas i utf8 utan man måste vid varje databaskoppling sätta

mysql_query("SET NAMES utf8")

för att nordiska tecken skall visas korrekt.

Detta sätts lämpligtvis direkt efter att man öppnat databasen.

 

 

Länk till kommentar
Dela på andra webbplatser

det där gjorde susen!!

 

Tack och Poäng.

 

Dock har jag ajax-biten kvar, dp detta endast hjälpte mig få en vanlig mysql-hämtning i utf-8. Körde ett snabbt test men det funkade inte.

 

Jag kodade javascriptfilen som utf-8, men måste den också hån nån header-liknande pryl eller meta-tag's-akigt?

 

Jag våndas lite över en grej och det är att min "riktiga" databas är relativt stor (i mina mått mätt) och den har kollation latin1_swedish_ci.

Den databas jag skapade för mitt test satte jag ju utf8 på, men det jag är rädd för är att om jag tar min "riktiga" databas och sätter om kollationen så kommer hela hemsidan att visas med knastecken istället för ÅÄÖ tills dess att jag fixat alla filer som utf8-kodning, samt alla andra kopplingar mellan databas och filer. Samma problem blir det väl om jag börjar med filerna, då komemr det visas skumt tills dess at databasen är klar. OK, att det kanske inte behöver ta flera dagar att fixa, men jag är ju lite nybörjare på det här så jag är rädd att gå bort mig.

 

Hur skulle du/ni göra om man var i den här sitsen, att få det i utf-8 verkar ju vara ett krav om man ska få ajaxen och funka, och det vill jag.

 

Tack så mkt för hjälpen hittils!

 

Länk till kommentar
Dela på andra webbplatser

Aj fan, glömde juh trycka efter att ja skrev inlägget, men nu har du å andra sidan fått två :-) Sorry!

 

 

 

Länk till kommentar
Dela på andra webbplatser

Mjo, visst kan det ta ett tag att se till att man genomgående använder sig av korrekt teckenkodning men det har man ju igen för varje tillägg, förändring och utökning man gör framöver.

 

Börja med databasen, uppdatera sedan markup/content-type (och spara i samma veva i rätt format) i samtliga filer.

 

/Cluster

----------------------------------------------

Any fool can use a computer. Many do.

-----[ http://eforum.kicks-ass.net ]------

 

Länk till kommentar
Dela på andra webbplatser

  • 2 veckor senare...

Jag gjorde feg-varianten. Exporterade hela min databas, editerade sen manuellt i sql-filen så jag fick rätt charset och kollationering överallt, och importerade den filen till en ny databas skapad på rätt teckensnitt. Sen speglade hela min filstruktur och sparade de filerna i rätt format och la till nödvändiga metataggar och headers. Nu har jag en tvillingsida som jag kommer att gå över till så snart allt är verifierat.

 

Det gick jättebra och men mitt i all glädje så åkta jag ju på skiten med att javascriptet inte skickade åäö vidare till serversidan. Det funkade i ff men inte i ie, så efter att ha läst en del om det bytte jag från GET till POST i javascriptet och nuså verkar det mesta funka.

Än så länge så tar jag bara strängar ur en dd-list och använder som sökord i en mysql-fråga, men nästa steg blir att även skicka strängar till databasen via javascriptet, så vi får väl se vilka överraskningar som väntar då...

 

Tack alla för all hjälp hittils, guld värt!

 

 

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...