解決Java調用php web webService 中文參數亂碼

來源:互聯網
上載者:User

 

利用base64原理,在Java編寫base64_encode函數,在php端解析,可以做到一勞永逸。

   package com.webservices;
  public class Base64_Encode { //對應php裡的 base64_decode 方法
  private static final String base64code = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
  + "abcdefghijklmnopqrstuvwxyz" + "0123456789" + "+/";
  private static final int splitLinesAt = 76;
  public static byte[] zeroPad(int length, byte[] bytes) {
  // initialized to zero by JVM
  byte[] padded = new byte[length];
  System.arraycopy(bytes, 0, padded, 0, bytes.length);
  return padded;
  }
  public static String encode(String string) {
  String encoded = "";
  byte[] stringArray;
  try {
  // use appropriate encoding string!
  stringArray = string.getBytes("UTF-8");
  } catch (Exception ignored) {
  // use locale default rather than croak
  stringArray = string.getBytes();
  }
  // determine how many padding bytes to add to the output
  int paddingCount = (3 - (stringArray.length % 3)) % 3;
  // add any necessary padding to the input
  stringArray = zeroPad(stringArray.length + paddingCount, stringArray);
  // process 3 bytes at a time, churning out 4 output bytes
  // worry about CRLF insertions later
  for (int i = 0; i < stringArray.length; i += 3) {
  int j = ((stringArray[i] & 0xff) << 16) +
  ((stringArray[i + 1] & 0xff) << 8) +
  (stringArray[i + 2] & 0xff);
  encoded = encoded + base64code.charAt((j >> 18) & 0x3f) +
  base64code.charAt((j >> 12) & 0x3f) +
  base64code.charAt((j >> 6) & 0x3f) +
  base64code.charAt(j & 0x3f);
  }
  // replace encoded padding nulls with "="
  return splitLines(encoded.substring(0, encoded.length() -
  paddingCount) + "==".substring(0, paddingCount));
  }
  public static String splitLines(String string) {
  String lines = "";
  for (int i = 0; i < string.length(); i += splitLinesAt) {
  lines += string.substring(i, Math.min(string.length(), i + splitLinesAt));
  lines += "/r/n";
  }
  return lines;
  }
  }
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.