共計 1344 個字符,預計需要花費 4 分鐘才能閱讀完成。
在 Java 中解決 Socket 中文亂碼問題可以使用以下方法:
- 使用 InputStreamReader 和 OutputStreamWriter 來處理字符流,可以指定字符編碼方式。在發送和接收數據時,可以使用指定的字符編碼方式進行解碼和編碼。
Socket socket = new Socket("localhost", 8080);
OutputStream outputStream = socket.getOutputStream();
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(outputStream, "UTF-8");
outputStreamWriter.write(" 你好 ");
outputStreamWriter.flush();
InputStream inputStream = socket.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "UTF-8");
char[] buffer = new char[1024];
int length = inputStreamReader.read(buffer);
System.out.println(new String(buffer, 0, length));
- 在發送和接收數據時,使用 getBytes() 方法和指定的字符編碼方式進行編碼和解碼。
Socket socket = new Socket("localhost", 8080);
OutputStream outputStream = socket.getOutputStream();
outputStream.write(" 你好 ".getBytes("UTF-8"));
outputStream.flush();
InputStream inputStream = socket.getInputStream();
byte[] buffer = new byte[1024];
int length = inputStream.read(buffer);
System.out.println(new String(buffer, 0, length, "UTF-8"));
- 在服務器端設置字符編碼方式。
ServerSocket serverSocket = new ServerSocket(8080);
Socket socket = serverSocket.accept();
InputStream inputStream = socket.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "UTF-8");
char[] buffer = new char[1024];
int length = inputStreamReader.read(buffer);
System.out.println(new String(buffer, 0, length));
注意:在上述代碼中,要確保發送和接收數據的編碼方式一致,常用的編碼方式有 UTF- 8 和 GBK。
丸趣 TV 網 – 提供最優質的資源集合!
正文完
發表至: Java
2023-12-13