Note oldNote = conn.getNoteTable().getNote(guid, true, false,false,false,true);
List<Resource> resList = conn.getNoteTable().noteResourceTable.getNoteResources(guid, true);
- oldNote.setContent(conn.getNoteTable().getNoteContentBinary(guid));
+ oldNote.setContent(conn.getNoteTable().getNoteContentNoUTFConversion(guid));
oldNote.setResources(resList);
duplicateNote(oldNote);
}
import java.util.Locale;\r
import java.util.StringTokenizer;\r
\r
+import org.apache.commons.lang.StringEscapeUtils;\r
import org.apache.commons.lang.StringUtils;\r
\r
import com.evernote.edam.limits.Constants;\r
// Source edited\r
@SuppressWarnings("unused")\r
private void sourceEdited() {\r
- QByteArray data = new QByteArray(sourceEditHeader+sourceEdit.toPlainText()+"</body></html>");\r
+ QTextCodec codec = QTextCodec.codecForLocale();\r
+ codec = QTextCodec.codecForName("UTF-8");\r
+ String content = codec.fromUnicode(sourceEdit.toHtml()).toString();\r
+ content = StringEscapeUtils.unescapeHtml(removeTags(content));\r
+ QByteArray data = new QByteArray(sourceEditHeader+content+"</body></html>");\r
getBrowser().setContent(data);\r
-\r
checkNoteTitle();\r
noteSignal.noteChanged.emit(currentNote.getGuid(), sourceEdit.toPlainText()); \r
}\r
public void showSource(boolean value) {\r
sourceEdit.setVisible(value);\r
}\r
+\r
+ // Remove HTML tags\r
+ private String removeTags(String text) {\r
+ StringBuffer buffer = new StringBuffer(text);\r
+ boolean inTag = false;\r
+ int bodyPosition = text.indexOf("<body");\r
+ for (int i=buffer.length()-1; i>=0; i--) {\r
+ if (buffer.charAt(i) == '>')\r
+ inTag = true;\r
+ if (buffer.charAt(i) == '<')\r
+ inTag = false;\r
+ if (inTag || buffer.charAt(i) == '<' || i<bodyPosition)\r
+ buffer.deleteCharAt(i);\r
+ }\r
+ \r
+ return buffer.toString();\r
+ }\r
}\r
}\r
}\r
\r
- // Get a note's content in raw, binary format for the sync.\r
- public String getNoteContentBinary(String guid) {\r
- NSqlQuery query = new NSqlQuery(db.getConnection());\r
- query.prepare("Select content from note where guid=:guid");\r
- query.bindValue(":guid", guid);\r
- query.exec(); \r
- query.next();\r
- return query.valueString(0);\r
- }\r
+\r
// Get a note's content in blob format for index.\r
public String getNoteContentNoUTFConversion(String guid) {\r
NSqlQuery query = new NSqlQuery(db.getConnection());\r
logger.log(logger.MEDIUM, query.lastError());\r
}\r
\r
- query.bindValue(":content", content);\r
+ QTextCodec codec = QTextCodec.codecForLocale();\r
+ codec = QTextCodec.codecForName("UTF-8");\r
+ query.bindValue(":content", codec.fromUnicode(content).toString());\r
query.bindValue(":guid", guid);\r
\r
check = query.exec();\r
import com.trolltech.qt.core.QFile;\r
import com.trolltech.qt.core.QIODevice.OpenModeFlag;\r
import com.trolltech.qt.core.QObject;\r
+import com.trolltech.qt.core.QTextCodec;\r
import com.trolltech.qt.gui.QMessageBox;\r
\r
import cx.fbn.nevernote.signals.NoteIndexSignal;\r
}\r
\r
private Note getNoteContent(Note n) {\r
- n.setContent(conn.getNoteTable().getNoteContentBinary(n.getGuid()));\r
+ QTextCodec codec = QTextCodec.codecForLocale();\r
+ codec = QTextCodec.codecForName("UTF-8");\r
+ n.setContent(codec.toUnicode(new QByteArray(n.getContent())));\r
return n;\r
}\r
\r
\r
logger.log(logger.EXTREME, "Writing content");\r
writer.writeStartElement("Content");\r
- writer.writeCDATA(conn.getNoteTable().getNoteContentBinary(note.getGuid()));\r
+ writer.writeCDATA(conn.getNoteTable().getNoteContentNoUTFConversion(note.getGuid()));\r
writer.writeEndElement();\r
writer.writeEndElement();\r
}\r