Toon posts:

mysql verandert tekens naar ?

Pagina: 1
Acties:
  • 106 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
ik heb een aantal plaatjes in een database en deze zou ik er graag uit willen halen.
Geen probleem natuurlijk..... behalve dat mysql de plaatjes verminkt. Na grondig onderzoek kwam ik er achter dat mysql de data niet letterlijk overneemt en bepaalde tekens veranderd naar ?. Hierdoor werken de plaatjes natuurlijk niet meer. Iemand een idee waar in de instellingen staan dat mysql alles wel letterlijk behoud? mijn dank zal groot zijn :o

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

HOE heb je je plaatjes opgeslagen in je database en in welk formaat?
HOE haal je je plaatjes uit de database. Doe je dat met serverside code? Zo ja, geef dan relevante code zodat we met je mee kunnen denken aan een oplossing. Zo nee, geef dan even aan hoe je de data dan wel uit de database haalt ;)

Is het ook mogelijk om een stuk online te zetten zodat het je probleemomschrijving duidelijker maakt?



Misschien ook even handig om de volgende sticky's in dit subforum te lezen:
Welkom in Programming - FAQ en Beleid
*** Over topictitels in PRG - lezen voor topic openen!!! ***

En welkom op GoT :w

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Verwijderd

Topicstarter
HOE: als mediumblob, verder geen variabelen mee gegeven. het is een jpg plaatje.

ik heb het al op verschillende manieren er uit gehaald, met phpcode en phpmyadmin. resultaat voor bijde is het zelfde.

dit is wat phpmyadmin er van maakt als ik het er daar uit haal:
����\0JFIF\0\0\0d\0d\0\0��\0Ducky\0\0\0\0\0<\0\0��\0Adobe
en dit is wat het moet zijn.
ÿØÿà JFIF d d ÿì Ducky < ÿî Adobe

mijn gok is dat het ergens aan de collation ligt, maar die kan ik niet instellen in phpmyadmin. athans die blijft niet staan.

(mijn excuses voor de slechte topic start)

  • Soultaker
  • Registratie: September 2000
  • Nu online
BLOB's doen niets met collations (of character sets).

En hóé haal je het eruit met phpMyAdmin, want normaal gesproken kun je BLOB's daarmee niet bekijken (of je moet 'm exporteren, maar dan krijg je uiteraard een conversie naar tekst)?

offtopic:
Verder vind ik het wel treurig dat je het voor elkaar krijgt om in een topic title van vier woorden twee een spelfout te maken.

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 13:38
Weet je zeker dat MySQL de data vervormt, en niet je browser? Gekeken naar de wijze van vervorming kan dat niet.

[ Voor 32% gewijzigd door frickY op 03-11-2006 10:38 ]


Verwijderd

Topicstarter
Soultaker schreef op vrijdag 03 november 2006 @ 10:32:
BLOB's doen niets met collations (of character sets).

En hóé haal je het eruit met phpMyAdmin, want normaal gesproken kun je BLOB's daarmee niet bekijken (of je moet 'm exporteren, maar dan krijg je uiteraard een conversie naar tekst)?

offtopic:
Verder vind ik het wel treurig dat je het voor elkaar krijgt om in een topic title van vier woorden twee een spelfout te maken.
ja ik heb hem geexporteerd. sorry, maar ben beetje dyslectisch. verder vind ik dat je post mij dus geen stap verder heeft geholpen.
Weet je zeker dat MySQL de data vervormt, en niet je browser? Gekeken naar de wijze van vervorming kan dat niet.
dus mysql vervormt de data niet? Waarom niet?

  • burne
  • Registratie: Maart 2000
  • Niet online

burne

Mine! Waah!

Verwijderd schreef op vrijdag 03 november 2006 @ 10:54:
verder vind ik dat je post mij dus geen stap verder heeft geholpen.
Je stelt een vraag die zonder verdere informatie niet te beantwoorden is. Je kunt op een groot aantal manieren informatie in en uit mysql halen. Soms leidt dat tot conversies (en dat is waar je hier last van hebt..). Je zult dus minimaal met de queries moeten komen waarmee je plaatjes in je database zet en ze later weer opvraagt en wat informatie over de omgeving die je daarvoor gebruikt, zoals je mysql-versie en je php-versie (ik gok dat je php gebruikt, maar als het iets anders zoals python is moet je dat vooral aangeven.)

I don't like facts. They have a liberal bias.


  • reddevil
  • Registratie: Februari 2001
  • Laatst online: 06-10 14:25
character conversie probleem mogelijk, haal de data binary op en bekijk welke (cijfer)waardes in de database staan. Dat is de enige goede mogelijkheid om te kijken waar het fout is gegaan.

Verwijderd

Topicstarter
burne schreef op vrijdag 03 november 2006 @ 11:07:
[...]

Je stelt een vraag die zonder verdere informatie niet te beantwoorden is. Je kunt op een groot aantal manieren informatie in en uit mysql halen. Soms leidt dat tot conversies (en dat is waar je hier last van hebt..). Je zult dus minimaal met de queries moeten komen waarmee je plaatjes in je database zet en ze later weer opvraagt en wat informatie over de omgeving die je daarvoor gebruikt, zoals je mysql-versie en je php-versie (ik gok dat je php gebruikt, maar als het iets anders zoals python is moet je dat vooral aangeven.)
als hij dat had zegt, dan had ik er wat aan gehad is het niet? maar nee, hij moet een opmerking maken over spelling. Dat is de reden dat ik nog nooit iets gepost heb op GoT.

jah ik gebruik php versie geen idee, mysql versie MySQL 4.1.11.

de query:
insert into Foto VALUES('$id','$foto');
verder heb ik het ook via phpmyadmin geprobeerd maar dat hielp ook niets.
character conversie probleem mogelijk, haal de data binary op en bekijk welke (cijfer)waardes in de database staan. Dat is de enige goede mogelijkheid om te kijken waar het fout is gegaan.
zal het proberen, dank u.

  • reddevil
  • Registratie: Februari 2001
  • Laatst online: 06-10 14:25

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 14:25

Janoz

Moderator Devschuur®

!litemod

blobs doen niks met charactersets, er is dus geen conversie probleem anders dan op momenten dat je de data daadwerkelijk als characters probeert te gebruiken (bij een im- of export in phpmyadmin).

Mysql verandert dus helemaal niks. Het lijkt me dan ook handig wanneer je ietsje meer van je code laat zien waarin je je plaatje in de database stopt en waneer je de plaatjes uit je database haalt. Daarnaast lijkt het me handiger dat je je exacte probleem aangeeft. Krijg je kruisjes op je site ipv de verwachte foto's?

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • reddevil
  • Registratie: Februari 2001
  • Laatst online: 06-10 14:25
Janoz schreef op vrijdag 03 november 2006 @ 11:48:
blobs doen niks met charactersets, er is dus geen conversie probleem anders dan op momenten dat je de data daadwerkelijk als characters probeert te gebruiken (bij een im- of export in phpmyadmin).

...
Als je het verkeerd doet kan je wel degelijk char conversie problemen krijgen, niet door de blob, maar door je code ervoor :)

  • Mitrilvich
  • Registratie: Juli 2004
  • Laatst online: 29-10 17:46
Misschien de query zo samenstellen:

$foto = addslashes($foto);
$query = "insert into Foto VALUES('$id','$foto')";

Als de var $foto een bulk aan gekke tekens bevat zal er allicht wat fout gaan wanneer deze niet goed ge-escaped is.

  • Soultaker
  • Registratie: September 2000
  • Nu online
Verwijderd schreef op vrijdag 03 november 2006 @ 11:29:
als hij dat had zegt, dan had ik er wat aan gehad is het niet? maar nee, hij moet een opmerking maken over spelling.
Ik gaf (wellicht) zinnige informatie, en ik stelde gerichte vragen om het probleem duidelijk in kaart te brengen.

Daarnaast maakte ik tussen [offtopic]-tags één opmerking over spelling, en dan kies je dat eruit om over te gaan zeuren? Je kunt de kritiek ook ter harte nemen, want de dyslectici die ik ken hebben geen enkele moeite om zinnen met hoofdletters te beginnen (regelmatige werkwoorden vervoegen kunnen ze ook, al kost dat iets meer moeite dan bij een normaal persoon).

On topic:
jah ik gebruik php versie geen idee
Gebruik daarvoor phpinfo (maar ik denk dat de versie van PHP er niet toe doet).
de query:
insert into Foto VALUES('$id','$foto');
Moet je niet iets escapen?

Verwijderd

addslashes zou ik niet proberen op een binary string, en phpmyadmin geeft inderdaad de rauwe data weer met veel NULL er tussen kijk maar eens:

RAW: ���� \0 JFIF \0 \0 \0 d \0 d \0 \0 �� \0 Ducky \0 \0 \0 \0 \0 < \0 \0 �� \0 Adobe
Filtered: ���� JFIF d d �� Ducky < �� Adobe
expected: ÿØÿà JFIF d d ÿì Ducky < ÿî Adobe

lijkt dus inderdaad op een charset probleem. op de vraagtekens na is de string correct.
weet je zeker date je de data BLOB opslaat?
probeer je een BINARY unsafe functie op deze data voordat je deze opslaat?

php heeft geen native support voor deze tekens dus weet zeker moet je deze binair behandelen

  • Soultaker
  • Registratie: September 2000
  • Nu online
Niet addslashes natuurlijk, maar mysql_escape_string is wat je nodig hebt. Alternatief kun je de mysqli API gebruiken om geparametriseerde queries te gebruiken.

  • Mitrilvich
  • Registratie: Juli 2004
  • Laatst online: 29-10 17:46
Verwijderd schreef op vrijdag 03 november 2006 @ 12:27:
addslashes zou ik niet proberen op een binary string,
Werkt bij mij altijd wel, zou eigenlijk niet weten waarom niet.

Wanneer je query uitvoer op een database is misschien belangrijk dat je mysql-verbinding op utf-8 staat, vanwege alle gekke tekens. Vóór je insert zou je bijvoorbeeld de volgende query uit kunnen voeren om dat in te stellen:
set names 'utf8'
Soultaker schreef op vrijdag 03 november 2006 @ 12:31:
Niet addslashes natuurlijk, maar mysql_escape_string is wat je nodig hebt. Alternatief kun je de mysqli API gebruiken om geparametriseerde queries te gebruiken.
Als ik kijk naar je link, zou dan 'mysql_real_escape_string' een oplossing kunnen bieden? Deze houdt ook rekening met de charset

[ Voor 90% gewijzigd door Mitrilvich op 03-11-2006 12:38 ]


Verwijderd

check: http://nl2.php.net/manual/nl/function.addslashes.php

volgensmij is addslashes niet binary safe, en houdt geen respect voor de charset van je database.
lees ook de comments eronder staan nogal wat nuttige tips tussen.

  • TerraGuy
  • Registratie: Februari 2001
  • Laatst online: 17-06-2023

TerraGuy

The weirdo with the beard

Soultaker schreef op vrijdag 03 november 2006 @ 12:24:
[...]
Daarnaast maakte ik tussen [offtopic]-tags één opmerking over spelling, en dan kies je dat eruit om over te gaan zeuren?
offtopic:
Je kunt het ook op deze manier bekijken: de beste jongen stelt een vraag waarop hij een antwoord zoekt, en jij kiest een spelfout eruit om over te gaan zeuren? ;) Jij zegt iets, hij haakt erop in, en dan geef je hem de schuld. Dat klopt natuurlijk niet. Jullie zitten allebei fout! Niet op inhaken en niet over beginnen.
Tussen offtopic-tags zetten klinkt misschien als 'er minder waarde aan toe kennen', maar vaak voelt het aan alsof je nog even onder water steekt. Het is dan ook zéér verleidelijk om erop in te haken. En na de bijna 8000 posts die je hebt geplaatst moet je dat toch wel opgevallen zijn en de conclusie trekken dat je het maar beter niet kunt doen. Of zeg het aardig en behulpzaam, in de trant van: "in je topictitel staat 'veranderd', maar het moet zijn 'verandert'. Dit kun je testen door het werkwoord te vervangen door 'lopen' (mysql loopt ...)." Maar beter is om het lekker te laten, zoals je ziet levert het alleen maar ergernis op. Het helpt niemand. Iedereen maakt wel eens typfouten (de één wat meer dan de ander). Zolang het nog leesbaar is, moet je er om wille van de goede vrede en het doel van het forum, elkaar helpen, niet over beginnen.

Verder ben ik het er wel mee eens dat je wel je hele php-code hier moet neerzetten (tussen php-tags als het kan), want anders kunnen we niet goed zien wat er fout gaat en blijft het bij gissen. Dus kom op met je code! ;)

Iedereen kan gelijk hebben, allemaal tegelijk. Dat heb je met quantum.

Pagina: 1