斯威夫特中的希伯来字符

时间:2015-09-11 10:40:46

标签: ios xcode swift character-encoding hebrew

我有一个应用程序,下载包含希伯来语字符的网站的html,这是代码:

std::string stringToSearch[] = {"Siva123456789abcdefghiabcdefghjklm123"};
std::string pattern1(Siva123.*abc.*abc.*123);
std::string pattern2(Siva123.*abc.*abc.*12.);

size_t patternLength1 = 0; 
size_t patternLength2 = 0; 

std::smatch matched_elements;
if (std::regex_match(stringToSearch [0], matched_elements, pattern1))
            {
                patternLength1 = matched_elements.length();

            }

if (std::regex_match(stringToSearch [0], matched_elements, pattern2))
            {
                patternLength2 = matched_elements.length();

            }

我的问题是,希伯来字符显示为gibrish:òøëúùòåú - éåíùéùé

如何下​​载html并获取正确的字符?

1 个答案:

答案 0 :(得分:0)

此服务器的响应编码为“Windows Hebrew”。

我正在使用CoreFoundation来找到正确的String编码等价物:

let newurl = NSURL(string: "http://www.handasaim.co.il")
var error: NSError?
let encoding = CFStringConvertEncodingToNSStringEncoding(UInt32(CFStringEncodings.WindowsHebrew.rawValue))
let html = String(contentsOfURL: newurl!, encoding: encoding, error: &error)

结果:

  

תיכוןלהנדסאיםהרצליהלידאוניברסיטתתלאביב

Swift 2更新

if let newurl = NSURL(string: "http://www.handasaim.co.il") {
    let encoding = CFStringConvertEncodingToNSStringEncoding(UInt32(CFStringEncodings.WindowsHebrew.rawValue))
    if let html = try? String(contentsOfURL: newurl, encoding: encoding) {
        print(html)
    }
}

注意:看一下Martin R的method来自动检测服务器响应的编码。我的解决方案是使用curl检查标题。