docstring const from_ascii(char const * ascii)
{
docstring s;
- int n = strlen(ascii);
- s.resize(n);
- char_type *d = &s[0];
- while (--n >= 0) {
- d[n] = ascii[n];
- LASSERT(static_cast<unsigned char>(ascii[n]) < 0x80, /**/);
+ if (int n = strlen(ascii)) {
+ s.resize(n);
+ char_type *d = &s[0];
+ while (--n >= 0) {
+ d[n] = ascii[n];
+ LASSERT(static_cast<unsigned char>(ascii[n]) < 0x80, /**/);
+ }
}
return s;
}
}
+string const to_iconv_encoding(docstring const & s, string const & encoding)
+{
+ std::vector<char> const encoded =
+ ucs4_to_eightbit(s.data(), s.length(), encoding);
+ return string(encoded.begin(), encoded.end());
+}
+
+
+docstring const from_iconv_encoding(string const & s, string const & encoding)
+{
+ std::vector<char_type> const ucs4 =
+ eightbit_to_ucs4(s.data(), s.length(), encoding);
+ return docstring(ucs4.begin(), ucs4.end());
+}
+
+
docstring const normalize_c(docstring const & s)
{
return qstring_to_ucs4(toqstr(s).normalized(QString::NormalizationForm_C));