MSSQL probleem met Turkse karakters

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • ArnoldSmit
  • Registratie: November 2016
  • Laatst online: 06-05 17:30
Ik heb een probleem met specifieke Turkse karakters goed op te halen met een select query.
Specifiek deze 'ğ' , zelfs met een select query gaat het niet zoals het hoort.
SELECT 'Çallioğlu.pdf'
Wordt Çallioglu.pdf

Alleen met de N ervoor, word het resultaat wel goed weergegeven
SELECT N'Çallioğlu.pdf'

Nu wil ik direct via een select statement de informatie direct uit de database halen.
Weet iemand hoe ik dit kan realiseren?

Beste antwoord (via ArnoldSmit op 13-03-2024 15:06)


  • sig69
  • Registratie: Mei 2002
  • Laatst online: 02:25
Dan zou ik er even nvarchar van maken.

Roomba E5 te koop

Alle reacties


Acties:
  • +4 Henk 'm!

Anoniem: 36835

met een N ervoor.

Acties:
  • +1 Henk 'm!

  • D4NG3R
  • Registratie: Juli 2009
  • Laatst online: 23:28

D4NG3R

kiwi

:)

https://learn.microsoft.c...sql?view=sql-server-ver16
Without the N prefix, the string is converted to the default code page of the database that may not recognize certain characters.
Dus inderdaad zoals @Anoniem: 36835 aangeeft; met een N ervoor.

Komt d'r in, dan kö-j d’r oet kieken


Acties:
  • +1 Henk 'm!

  • J2pc
  • Registratie: Oktober 2002
  • Niet online

J2pc

UT Tux Edition

Wat is nu precies je vraag?

de N ervoor geeft aan dat het een unicode string is.
https://learn.microsoft.c...sql?view=sql-server-ver16

code:
1
select * from tabel where veld = N'Çallioğlu.pdf'

"The computer is incredibly fast, accurate, and stupid. Man is unbelievably slow, inaccurate, and brilliant. The marriage of the two is a challenge and opportunity beyond imagination." © Stuart G. Walesh


Acties:
  • 0 Henk 'm!

  • ArnoldSmit
  • Registratie: November 2016
  • Laatst online: 06-05 17:30
De N ervoor werkt prima als ik het zo doe
SELECT N'Çallioğlu'

Echter hoe gebruik ik dit als het een veld moet zijn zoals:
select [Bestandsnaam]
from [tabel]

?

Acties:
  • 0 Henk 'm!

  • J2pc
  • Registratie: Oktober 2002
  • Niet online

J2pc

UT Tux Edition

Begrijp ik goed dat het speciale karakter in een kolomnaam zit?

"The computer is incredibly fast, accurate, and stupid. Man is unbelievably slow, inaccurate, and brilliant. The marriage of the two is a challenge and opportunity beyond imagination." © Stuart G. Walesh


Acties:
  • 0 Henk 'm!

Anoniem: 36835

ArnoldSmit schreef op dinsdag 5 maart 2024 @ 14:03:
De N ervoor werkt prima als ik het zo doe
SELECT N'Çallioğlu'

Echter hoe gebruik ik dit als het een veld moet zijn zoals:
select [Bestandsnaam]
from [tabel]

?

[...]
Je bedoelt een variabel? Dan concat je die N ervoor bij het definieren van je variabel.

Acties:
  • 0 Henk 'm!

  • ArnoldSmit
  • Registratie: November 2016
  • Laatst online: 06-05 17:30
J2pc schreef op dinsdag 5 maart 2024 @ 14:06:
Begrijp ik goed dat het speciale karakter in een kolomnaam zit?
Nee het speciale karakter zit in de output ervan, en ik heb geen idee hoe ik het karakter mee krijg in de output

Acties:
  • +2 Henk 'm!

  • J2pc
  • Registratie: Oktober 2002
  • Niet online

J2pc

UT Tux Edition

Ah, dus als ik 't goed begrijp:

hoewel er 'Çallioğlu' in het veld/de kolom staat (of moet staan), de output van de select 'Çallioglu.pdf' teruggeeft

Die C lijkt erg op een Franse [ç], Ik weet niet of dit ook daadwerkelijk hetzelfde karakter is. Maar ik vind het opvallend dat deze wel terugkomt, maar de g met dakje (die ik niet zomaar ken uit m'n Frans) niet.

Dat doet me denken aan taal/encoding settings. Systemen hebben nog wel eens de neiging om karakters die niet passen in de settings ter vervangen voor gelijkende unicode karakters die wel passen (misschien een turkse -> franse ç?)

Ik zou even naar de collation en codpage etc. settings kijken
https://learn.microsoft.c...ort?view=sql-server-ver16

"The computer is incredibly fast, accurate, and stupid. Man is unbelievably slow, inaccurate, and brilliant. The marriage of the two is a challenge and opportunity beyond imagination." © Stuart G. Walesh


Acties:
  • +2 Henk 'm!

  • Opifex
  • Registratie: September 2013
  • Laatst online: 20:03
J2pc schreef op dinsdag 5 maart 2024 @ 14:55:

Die C lijkt erg op een Franse [ç], Ik weet niet of dit ook daadwerkelijk hetzelfde karakter is. Maar ik vind het opvallend dat deze wel terugkomt, maar de g met dakje (die ik niet zomaar ken uit m'n Frans) niet.
De Franse ç is een geldig karakter in extended ASCII. Die speciale g niet.

Acties:
  • 0 Henk 'm!

  • sig69
  • Registratie: Mei 2002
  • Laatst online: 02:25
Is je kolom varchar of nvarchar?

Roomba E5 te koop


Acties:
  • 0 Henk 'm!

  • ArnoldSmit
  • Registratie: November 2016
  • Laatst online: 06-05 17:30
@sig69 De kolom is het type varchar

Acties:
  • Beste antwoord
  • +1 Henk 'm!

  • sig69
  • Registratie: Mei 2002
  • Laatst online: 02:25
Dan zou ik er even nvarchar van maken.

Roomba E5 te koop


Acties:
  • 0 Henk 'm!

  • ValHallASW
  • Registratie: Februari 2003
  • Niet online
Opifex schreef op dinsdag 5 maart 2024 @ 14:59:
De Franse ç is een geldig karakter in extended ASCII. Die speciale g niet.
"extended ASCII" zegt niets in deze context, want dat kan even goed Windows-1254 zijn, waar zowel de ç als de ğ valide karakters zijn. Het gaat hier (vermoedelijk) specifiek om Windows-1252.

Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Als je code of data gaat migreren maakt het uit of het Windows-1252 of Windows-XXXX is, maar hier is het mierenneuken: Het is 1999 geweest, de charsets met 1 byte per karakter volstaan niet meer.

Korter: Veel strings, en zeker persoonsnamen, moeten in unicode. The end.

{signature}


Acties:
  • 0 Henk 'm!

  • HenkEisDS
  • Registratie: Maart 2004
  • Laatst online: 05-05 19:30
Ğ =
G met een breve =
Yumuşak in het Turks =
‘Zachte G’.
Pagina: 1