static String username = "######";
    static String password = "#####";
    static String senderid = "###";
    static String message = "वउह";

    static String mobileNo = "08447475458";
    static String mobileNos = "08447475458,08447475458";

    static String scheduledTime = "20110701 02:27:00";
    static HttpURLConnection connection = null;




    public static void main(String[] args) {
        try {

            URL url = new URL("http://msdgweb.mgov.gov.in/esms/sendsmsrequest");
            connection = (HttpURLConnection) url.openConnection();
            connection.setDoInput(true);
            connection.setDoOutput(true);
            connection.setRequestMethod("POST");
            connection.setFollowRedirects(true);
             connection = sendSingleSMS(username, password, senderid,
             mobileNo, message);

            System.out.println("Resp Code:" + connection.getResponseCode());
            System.out.println("Resp Message:"
                    + connection.getResponseMessage());

        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();

        }
    }
// Method for sending single SMS.
    public static HttpURLConnection sendSingleSMS(String username,
            String password, String senderId,
String mobileNo, String message) {
try {
    byte[] bytes = message.getBytes("UTF-8");
        String smsservicetype = "singlemsg"; // For single message.
            String query = "username=" + URLEncoder.encode(username)
                + "&password=" + URLEncoder.encode(password)
                + "&smsservicetype=" + URLEncoder.encode(smsservicetype)
                + "&content=" + URLDecoder.decode(message,"utf-8") + "&mobileno="
                + URLEncoder.encode(mobileNo) + "&senderid="
                + URLEncoder.encode(senderId);

        connection.setRequestProperty("Content-length", String
            .valueOf(query.length()));
        connection.setRequestProperty("Content-Type",
            "application/x-www-form-urlencoded;charset = utf-8");
        connection.setRequestProperty("User-Agent",
            "Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt)");
            DataOutputStream output = new DataOutputStream(connection
                    .getOutputStream());
        int queryLength = query.length();
        output.writeBytes(query);
        System.out.println(query);
        DataInputStream input = new DataInputStream(connection
                    .getInputStream());
        for (int c = input.read(); c != -1; c = input.read())
            System.out.print((char) c);
        input.close();
    } catch (Exception e) {
        System.out.println("Something bad just happened.");
        System.out.println(e);
        e.printStackTrace();
    }

    return connection;


我正在使用此代码从网关发送短信,但是如果文本为英文,则此代码很好,但是如果我给出一些印地文文本,则它无法读取并且用户得到了一些字符。

输出是这样的

व� हव�� व�हव ��व� हवहব व�ह

最佳答案

DataInputStream正在读取字节,但是您必须使用正确的编码将这些字节正确转换为字符。为此,您可以使用以下构造函数构造String

String hindiCharSequence = new String(bytes, "UTF-8");

10-06 12:52