diff --git a/tagvalue.cpp b/tagvalue.cpp index ae98100..d09f5fa 100644 --- a/tagvalue.cpp +++ b/tagvalue.cpp @@ -166,7 +166,17 @@ int32 TagValue::toInteger() const if(!isEmpty()) { switch(m_type) { case TagDataType::Text: - return ConversionUtilities::stringToNumber(string(m_ptr.get(), m_size)); + switch(m_encoding) { + case TagTextEncoding::Unspecified: + case TagTextEncoding::Latin1: + case TagTextEncoding::Utf8: + return ConversionUtilities::stringToNumber(m_ptr.get()); + case TagTextEncoding::Utf16LittleEndian: + case TagTextEncoding::Utf16BigEndian: + u16string u16str(reinterpret_cast(m_ptr.get()), m_size / 2); + ensureHostByteOrder(u16str, m_encoding); + return ConversionUtilities::stringToNumber(u16str); + } case TagDataType::Integer: case TagDataType::PositionInSet: case TagDataType::StandardGenreIndex: