Ucinanie znaku w kodowaniu UTF8 - Firebird

0

Witam,

Problem jest następujący:

W programie zmienna typu

WideString 

zawiera ciąg znaków: **[Ciąg_znaków.txt]**
Problemem jest to, że gdy wrzucam do bazy tą wartość to ucina mi ten ostatni znak, pomimo, że nawet próbowałem wklepać do bezpośrednio z IBManagera to, przy metodzie POST znak jest obcinany.

Charset kolumny mam ustawiony na UTF8** [IBManager.jpg]**
Znak ten jest wyświetlany prawidłowo w programie w gridzie, którego kolumna ustawiona jest jako typ

WideString 

[Znak w programie.jpg]

Ktoś ma jakiś pomysł? Muszę porównać wartość z grida w programie z tą trzymaną w bazie, ale niestety do bazy nie mogę jej nawet dobić.

0

ten znak jest o kodzie 02 a ten nakłada się na standardowe ASCII - należy do kodów sterujących i zapewne nie jest to żaden "chiński" znaczek. To czy coś zobaczysz czy nie zależeć może też od czcionki. Po wprowadzeniu odpytaj bazę danych jaką długość ma ten napis a nie sprawdzaj tego "na oko".

0

Nie wiem czy dobrze zrozumiałeś, ale w programie cała wartość jest wyświetlana poprawnie, w bazie nie ma czcionki... jest tylko kodowanie i to w bazie ten znak jest ucinany.
Po odpytaniu bazy zwraca 0 rekordów zawierających podany znak.

0

Ok zrobiłem zapytanie: select * from tasks where control_name like '%[tutaj ten znak bo nie moge go wkleic]%' i rzeczywiście zwrócił kilka rekordów, z tym, że jak tylko z poziomu bazy edytuję to pole i zatwierdzę zmiany to ten znak jest usuwany.

Pojawił się teraz inny problem, w zmiennej WideString mam inną wartość niż ta z bazy... wygląda ona tak: '汆瑡畂瑴湯2峐જ㲀B汐જ'#2 - 2 ostatnie znaki są inne. Co może być tego przyczyną?
Podejrzewam, że WideString zamienił sobie ten znak, którego nie mogę tu wkleić na te 2?

0

tak jak już pisałem ten znak jest o kodzie 2 w tabeli ASCII (oznaczający "start of text") i prawdopodobnie nie jest częścią napisu tylko przypadkowo ci się skopiował np. z PDF'a (nie wiem z czego to bierzesz). Znak płotek cyfra to prawdopodobnie sposób przedstawiania takich niedrukowalnych znaków gdzie płotek to znak specjalny a 2 to kod znaku czyli #2 czytasz jako jedno. http://pl.wikipedia.org/wiki/UTF-8 http://taat.pl/narzedzia/utf-8/

0

Dzięki szopenfix za pomoc. Ten znak nie jest przypadkowo skopiowany bo pobieram go funkcją, którą zamieściłem w temacie: http://4programmers.net/Forum/Delphi_Pascal/230208-poranie_nazwy_komponentu_obcej_aplikacji
Tak, czy siak problem polegał w czymś innym - pobierał mi za każdym razem inne znaki (bardzo podobne) - o tym w temacie pod tym linkiem.

1 użytkowników online, w tym zalogowanych: 0, gości: 1