Тази тема е била обект на много дискусии и въпреки това все още виждаме да се появяват нови. Моят сценарий е следният:
Рамка на Java, работеща на Linux сървър, където UTF-8 е стандартното кодиране на знаци в JVM. Рамката се състои от някои услуги, получаващи Tibco RV съобщения, които трябва да бъдат обработени. Някои от тези съобщения съдържат различни от ASCII знаци и се изпращат от Windows сървър, а ISO8859-1 е кодирането, използвано при създаването на съобщението. Сега, когато данните се извличат от съобщението Tib rv, проблемните полета „пристигат“ като Java обекти и трябва да бъдат прехвърлени към низове... И тук все още не съм успял да извлека ISO8859-1 низове, съдържащи не ASCII символи (шведски "","","") към UTF-8 низ по правилен начин. Опитах да използвам следните методи:
String isoStreet = new String(response.get("street").toString().getBytes(StandardCharsets.ISO_8859_1),java.nio.charset.StandardCharsets.UTF_8);
и аз също се опитах да използвам енкодерите/декодерите в пакета java.nio без успех.
Това, което също е интересно е, че използвам PuttY, за да се свържа със сървър, където услугите се хостват и работят. И оттам имам възможността да направя директна заявка за Tibco rv от обвивката (използвайки клиента tibcorvsend) и изглежда, че трябва да задам отдалечения набор от знаци на ISO8859-1 в PuttY (Window_>Translation), преди да вляза в сървър и направете тази Tib rv заявка - когато това бъде направено, тези не-ASCII символи се показват правилно в отговора, без значение какво кодиране задам в отдалечения Linux сървър. Използването на „export LC_ALL=en_US.UTF-8“ или „export LC_ALL=sv_SE.iso88591“ няма значение в този случай... само какво отдалечено кодиране съм задал в PuttY...
Това трябва да означава, че съобщението за отговор изглежда добре и поне черупката може да изведе правилни знаци. Но когато съм вътре в Java VM (използвайки услуги на Java), предполагам, че полетата за отговор се натискат тихо в низове при отстраняване на грешки и преглеждане на отговорния обект (не искам това преобразуване в низове) в изгледа за гледане... не съм сигурен дали можете да ме последвате в това , ако не, може да се опитам да бъда по-ясен, ако е необходимо...
Всеки принос по този проблем, всеки
Поздрави /Р