[QScintilla] Fw: Strings with \0 charaters in it?

Matic Kukovec kukovecmatic at hotmail.com
Wed Apr 26 08:16:22 BST 2017


> On 25 Apr 2017, at 10:08 pm, Phil Thompson <phil at riverbankcomputing.com> wrote:
> >
> > On 25 Apr 2017, at 7:06 pm, Matic Kukovec <kukovecmatic at hotmail.com> wrote:
> >>
> >>> On 25 Apr 2017, at 6:16 pm, Matic Kukovec <kukovecmatic at hotmail.com> wrote:
> >>>>
> >>>>
> >>>>> On 25 Apr 2017, at 5:08 pm, Matic Kukovec <kukovecmatic at hotmail.com> wrote:
> >>>>>>
> >>>>>> Hi guys,
> >>>>>>
> >>>>>> I just noticed that when adding strings that contain null characters ('\0') using the setText method,
> >>>>>> QScintilla cuts off the string at the first null character it finds. To be sure I opened the same text saved
> >>>>>> to a file with Notepad++ and SciTE and there the null characters appear.
> >>>>>>
> >>>>>> Is this a bug or should strings with null characters be handled differently?
> >>>>>> I used this example to for testing:
> >>>>>> qscieditor.setText("Test\nText\nIn\n\0An\nQscintilla\nEditor")
> >>>>>
> >>>>> Is that C++ or Python?
> >>>>>
> >>>>> setText() uses the low-level Scintilla SCI_SETTEXT which accepts a '\0' string, ie. you will get the same result if you used Scintilla.
> >>>>>
> >>>>> Phil
> >>>>
> >>>> Hi Phil,
> >>>>
> >>>> I'm using Python3 and before I tried setText and now I tried as you suggested:
> >>>> qscieditor.SendScintilla(SCI_SETTEXT, bytes("Test\nText\nIn\n\0An\nQscintilla\nEditor", encoding="ascii"))
> >>>> and I get the same result.
> >>>> I looked into the C++ setText method and it uses this line:
> >>>> SendScintilla(SCI_SETTEXT, ScintillaBytesConstData(textAsBytes(text)));
> >>>> Is there maybe an error in how the ScintillaBytesConstData or textAsBytes convert the text?
> >>>> I'm only guessing here.
> >>>
> >>> You misunderstand. I was saying that the behaviour you see is the way Scintilla works.
> >>>
> >>> Phil
> >>
> >> Are you sure?
> >> Then how do SciTE and Notepad++ do this without cutting off at the first '\0' character as they also use Scintilla?
> >
> > You'd have to look at the SciTE source code. Maybe...
> >
> > http://www.scintilla.org/ScintillaDoc.html#BackgroundLoadSave
>
> ...or use append() rather than setText().
>
> Phil

append works! Forgot about that method.

Thanks Phil!

Matic
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://www.riverbankcomputing.com/pipermail/qscintilla/attachments/20170426/4755b628/attachment.html>


More information about the QScintilla mailing list