Снятие заглавной буквы А с огибающей (В) - PullRequest
0 голосов
/ 14 июня 2019

Я написал код для получения широты и долготы, однако значения печатаются со знаком «Â». Есть ли способ удалить этого персонажа? Поиск показал, что он имеет адрес Unicode U + 00C2, но с использованием string.replace выдает ошибки. Есть ли способ удалить этот символ? Код:

import java.net.*;

import java.io.*;
import java.util.Scanner;
import static java.lang.System.*;
class findlatlon {
    static String code = " ";
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        //gets the city
        out.println("enter city, add plus between multiple words");
        String term = sc.nextLine();

        try {URL url = new URL("http://www.geonames.org/search.html?q=" + term + "&country=");

            URLConnection ucl = url.openConnection();
            InputStream stream = ucl.getInputStream();
            int i;
            //the string in which the html code will be stored
            code = " ";
            while ((i=stream.read())!= -1) {
                code += Character.toString((char)i);
            }
            //printing the html, only for testing
            System.out.print(code);
        } catch(Exception e) {
            System.out.println("error");
        }
        int i = 0;
        char ch = ' ';
        String lon = " ";
        String lat = " ";
        for (i = 0 ;i < code.length() ; i++) {
            ch = code.charAt(i);
            if (ch == '\u00B0') {
                break;
            }
        }
        int j;
        char ch2 =  ' ';

        for (j = i; i > 0; j--) {
            ch2 = code.charAt(j);
            if (ch2 =='N' || ch2 == 'S') {
                break;
            }
        }
        char ch3 = ' ';
        int k = 0;
        for (k = j; k < 45800; k++) {
            ch3 = code.charAt(k);
            if (ch3 != '<') {
                lat += ch3;
            } else {
                break;
            }
        }
        char ch4 = ' ';
        int z;
        for (z = k; z < 45000; z++) {
            ch4 = code.charAt(z);
            if (ch4 == 'W' || ch4 == 'E') {
                break;
            }
        }
        int y;
        char ch5 = ' ';
        for (y = z; y < 54000; y++) {
            ch5 = code.charAt(y);
            if (ch5 == '<') {
                break;
            } else {
                lon += ch5;
            }
        }

        System.out.println(lat);
        System.out.println(lon);
    }
}

Выход:

 S 33° 52' 4''
 E 151° 12' 26''

Любая помощь приветствуется, спасибо!

1 Ответ

1 голос
/ 14 июня 2019

, но с ошибками броска string.replace

Нет причин, по которым replace может иметь какую-либо ошибку.

str = str.replace("Â", "");

или

str = str.replace("\u00C2", "");

Живой пример


Сказано, см. Комментарий Филбурта .Эти символы являются побочным эффектом чтения страницы с неправильной кодировкой текста.(Подробнее о кодировках текста здесь .) Если вы читаете его с правильной кодировкой или используете API, который они предоставляют, у вас не должно быть этой проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...