void ZLEncodingCollection::init() { if (mySets.empty()) { ZLEncodingCollectionReader(*this).readDocument(ZLFile( encodingDescriptionPath() + ZLibrary::FileNameDelimiter + "Encodings.xml" )); } }
std::vector<std::string> &ZLEncodingConverter::knownEncodings() { if (ourKnownEncodings.empty()) { std::vector<std::string> candidates; EncodingListReader(candidates, ourEncodingsByCode).readDocument(encodingDescriptionPath() + "/Encodings.list"); for (std::vector<std::string>::const_iterator it = candidates.begin(); it != candidates.end(); ++it) { iconv_t converter = iconv_open("utf-8", it->c_str()); if (converter != (iconv_t)-1) { iconv_close(converter); ourKnownEncodings.push_back(*it); } else if (ZLFile(encodingDescriptionPath() + '/' + *it).exists()) { ourKnownEncodings.push_back(*it); } } if (ourKnownEncodings.empty()) { ourKnownEncodings.push_back("US-ASCII"); ourKnownEncodings.push_back("UTF-8"); } std::sort(ourKnownEncodings.begin(), ourKnownEncodings.end()); } return ourKnownEncodings; }
void ZLEncodingCollection::init() { if (mySets.empty()) { const std::string prefix = encodingDescriptionPath() + ZLibrary::FileNameDelimiter; ZLEncodingCollectionReader(*this).readDocument(prefix + "Encodings.xml"); } }