ในแอปพลิเคชันของฉันฉันใส่ข้อมูลในฐานข้อมูลโดยใช้รหัส C เนื่องจากสตริงที่ฉันได้รับจากแหล่งที่ไม่น่าเชื่อถือฉันได้หนีพวกเขาโดยใช้PQescapeByteaConn
ไลบรารี libpq ซึ่งทำงานได้ดีอย่างสมบูรณ์เช่นผลลัพธ์ในรูปแบบ Octet String ดูตัวอย่างด้านล่าง
สตริงอินพุต: \n\t\f\b\p\k\j\l\mestPrepared
สตริงเอาท์พุท: \\012\\011\\014\\010pkjlmestPrepared
เอาต์พุตสตริงถูกแทรกในฐานข้อมูล ตอนนี้ฉันดึงข้อมูลจากฐานข้อมูลในรหัส java โดยใช้ JDBC ฉันจะ unescape สตริงกลับไปเป็นค่าเดิมได้อย่างไร
ฉันคิดถึงวิธีที่เป็นไปได้สองวิธี
- เปลี่ยนเคียวรีการดึงฐานข้อมูลและส่งฟิลด์นี้ไปยังฟังก์ชันการจัดการสตริงของ postgres เช่นซึ่งสามารถแปลงไบต์เป็นข้อความ
- ทำการถอดรหัสในโค้ด Java
ฉันเข้าใจว่าวิธีที่ 1 จะมีประสิทธิภาพมากขึ้น ฉันได้ลองฟังก์ชั่นเกือบทั้งหมดที่ระบุไว้ที่นี่แต่ไม่มีอะไรทำงาน กรุณาช่วย!!
ฉันใช้ postgres รุ่น 8.4 บนเครื่อง linux
ResultSet.getBytes()
?