2
我有一個Ruby on Rails應用程序,它是Java和.Net應用程序的服務器。我有一個自定義標頭用於發送一些數據,但是當這些數據到達Ruby on Rails應用程序時,Rails將該值作爲UTF-8讀取,然後表示值不是是有效的UTF-8字符串。什麼是用於HTTP請求標題值的文本編碼?
舉例來說,如果我送JÜRGENELITE-HP我得到:
#<ActiveRecord::StatementInvalid: PGError: ERROR: invalid byte sequence for encoding "UTF8": 0xdc52
: SELECT * FROM "replicas" WHERE ("replicas"."identification" = 'J?RGENELITE-HP') AND ("replicas".user_id = 121) LIMIT 1>
Java的HTTP客戶端庫清楚正確打印在控制檯中的數據:
DEBUG [main] (DefaultClientConnection.java:268) - >> POST /ze/api/files.json HTTP/1.1
DEBUG [main] (DefaultClientConnection.java:271) - >> X-Replica: JÜRGENELITE-HP
DEBUG [main] (DefaultClientConnection.java:271) - >> Authorization: Basic bWxpbmhhcmVzOjEyMzQ1Njc4
DEBUG [main] (DefaultClientConnection.java:271) - >> Content-Length: 0
DEBUG [main] (DefaultClientConnection.java:271) - >> Host: localhost:3000
DEBUG [main] (DefaultClientConnection.java:271) - >> Connection: Keep-Alive
DEBUG [main] (DefaultClientConnection.java:271) - >> User-Agent: Apache-HttpClient/4.1.2 (java 1.5)
但是,當它到達它打破了軌道。 HTTP用什麼編碼來編碼標題值?
您可以到[這裏的解決方案]利用(http://stackoverflow.com/questions/1361604/how-to-encode-utf8-filename-for-http-headers-python-django)來解決你想要做的事情。 – 2012-04-27 19:43:15
[這裏也有一些很好的答案。](http://stackoverflow.com/questions/324470/http-headers-encoding-decoding-in-java) – 2012-04-27 20:11:17