W mojej aplikacji wstawiam dane do bazy danych przy użyciu kodu C, ponieważ ciągi, które otrzymuję z niezaufanego źródła, uniknąłem ich przy użyciu PQescapeByteaConn
biblioteki libpq. Który działa idealnie dobrze, tj. Wyniki w formacie ciąg znaków Octet. Zobacz poniższy przykład
Ciąg wejściowy: \n\t\f\b\p\k\j\l\mestPrepared
Łańcuch wyjściowy: \\012\\011\\014\\010pkjlmestPrepared
Łańcuch wyjściowy jest wstawiany do bazy danych. Teraz pobieram te dane z bazy danych w kodzie Java za pomocą JDBC. Jak mogę cofnąć scenografię ciągu z powrotem do jego oryginalnej wartości?
Myślałem o dwóch możliwych podejściach,
- Zmień zapytanie pobierania bazy danych i przekaż to pole do dowolnej funkcji manipulacji ciągiem postgres, tj. Która może konwertować bajt na tekst.
- Wykonaj dekodowanie w kodzie Java.
Rozumiem, że podejście 1 będzie bardziej wydajne. Próbowałem prawie wszystkich wymienionych tutaj funkcji , ale nic nie działa. Proszę pomóż!!
Używam wersji 8.4 postgres na maszynie z systemem Linux.
ResultSet.getBytes()
?