簡體   English   中英

然后將Object.toString()編碼為UTF-8

[英]Object.toString() then, encode to UTF-8

我正在嘗試實現一種將對象轉換為字符串的方法,然后將該字符串編碼為UTF-8並轉換為.txt。 到目前為止,我能夠使其工作,但是寫入輸出文件中的內容似乎還不行。。。我缺少什么?

編輯:代碼已編輯,現在我從文件中獲取了代碼;

阿森納W 10 L 02 D 03 GF 45 GA 05切爾西W 08 L 02 D 05 GF 17 GA 03阿斯頓維拉W 05 L 05 D 05 GF 05 GA 09赫爾城W 06 L 04 D 05 GF 30 GA 15因弗內斯加里東薊W 11 L 02 D 07 GF 50 GA 20

static void writeToDisk() throws ClassNotFoundException, IOException {

        Writer  out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(filename_2), "UTF-8"));        

        for(FootballClubNL club : deserializeFromDisk()){

            String clubString = club.toString();

            out.append(clubString).append("\r\n");
            out.flush();    
        }
        out.close();
    }

您未在任何地方指定編碼:

byte[] b = clubString.getBytes(StandardCharsets.UTF_8);

您的代碼還有其他問題。 方法的一個簡單版本是:

List<String> lines = new ArrayList<>();
for(FootballClubNL club : deserializeFromDisk()){
    lines.add(club.toString());
}
Files.write(Paths.get(filename_2), lines, StandardCharsets.UTF_8);

您似乎對編寫文本和編寫二進制文件感到困惑。 您需要多種操作。 我建議您選擇其中一個,否則您一定會感到困惑。

您遇到的問題是, byte[]沒有非常有用的toString()甚至Arrays.toString也無法滿足您的要求。

我懷疑除非您的toString()非常不尋常,否則您不需要UTF-8編碼。

文字書寫

try(PrintWriter pw = new PrintWriter(filename_2)) {
    for(FootballClubNL club : deserializeFromDisk())
        pw.println(club);
}

作為二進制寫

try(OutputStream out = new FileOutputStream(filename_2)) {
    for(FootballClubNL club : deserializeFromDisk())
        out.write(club.toString().getBytes());
}

轉換響應實體<object>內容類型為 text/plain 為 object.toString()<div id="text_translate"><p> 我一直在尋找如何做到這一點的幾個小時......</p><p> 我探索了轉換器 class 但似乎找不到任何東西。</p><p> 有人可以指點我正確的方向來轉換類型為 Object 的 ResponseBody 與 Object 是自定義 object 並指導我如何將內容設置為 textString/plainType。</p><p> 例如:</p><pre> @PostMapping("/example") public ResponseEntity&lt;Object&gt; example() { Example eg = new Example("Hello World"); return ResponseEntity.ok().contentType(MediaType.TEXT_PLAIN).body(eg); }</pre><p> 這將出錯</p><blockquote><p> WARN 2204 --- [nio-8080-exec-1].wsmsDefaultHandlerExceptionResolver: 已解決 [org.springframework.http.converter.HttpMessageNotWritableException: [class example.Example] 沒有預設 Content-Type 'text/plain' 的轉換器]</p></blockquote><p> 我知道發生這種情況是因為 Spring 不知道如何將此 object 轉換為文本/純格式,我知道我可以將正文轉換為 eg.toString(),但應用程序需要動態響應類型,因此如果我可以創建一個轉換器來做到這一點。</p><p> 謝謝</p></div></object>

[英]Convert ResponseEntity<Object> with content type text/plain to object.toString()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

相關問題 JList添加到Object.toString object +“”和object.toString()之間的區別 如何使JSONObject的toString()編碼UTF-8字符為Unicode,就像PHP的json_encode一樣? C ++ toString運算符similair到Object.toString 帶有UTF-8編碼的Tomcat 7 UTF-8編碼URL 將字符串編碼為UTF-8 轉換響應實體<object>內容類型為 text/plain 為 object.toString()<div id="text_translate"><p> 我一直在尋找如何做到這一點的幾個小時......</p><p> 我探索了轉換器 class 但似乎找不到任何東西。</p><p> 有人可以指點我正確的方向來轉換類型為 Object 的 ResponseBody 與 Object 是自定義 object 並指導我如何將內容設置為 textString/plainType。</p><p> 例如:</p><pre> @PostMapping("/example") public ResponseEntity&lt;Object&gt; example() { Example eg = new Example("Hello World"); return ResponseEntity.ok().contentType(MediaType.TEXT_PLAIN).body(eg); }</pre><p> 這將出錯</p><blockquote><p> WARN 2204 --- [nio-8080-exec-1].wsmsDefaultHandlerExceptionResolver: 已解決 [org.springframework.http.converter.HttpMessageNotWritableException: [class example.Example] 沒有預設 Content-Type 'text/plain' 的轉換器]</p></blockquote><p> 我知道發生這種情況是因為 Spring 不知道如何將此 object 轉換為文本/純格式,我知道我可以將正文轉換為 eg.toString(),但應用程序需要動態響應類型,因此如果我可以創建一個轉換器來做到這一點。</p><p> 謝謝</p></div></object> Object.toString()如何適用於不同的底層類型? 為什么默認的 Object.toString() 返回 hashCode 的十六進制表示?
 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM