Non-ASCII String(URL address) need to be escaped for WebBrowserComponent on OSX

Otherwise, the webBrowserComponent’ll not load it and display nothing.

This issue only happens on OSX (10.12).

I used 2 static methods which come from Projucer’s source code to solve the problem. These 2 methods are: addEscapeChars() and writeEscapeChars(). Code example:

webBrowserComponent.goToURL (addEscapeChars (urlString).replace ("\\x", "%"));

Since Projucer is a commercial software, I don’t know whether it’s legal or not to use those 2 methods.

Hope this topic will help someone:)

Can’t you use URL::addEscapeChars?

Yes, I can, Fabian. but URL::addEscapeChars() will display nothing at all, just like the normal String-url which includes non-ascii chars. :slight_smile:

The reason: URL::addEscapeChars() 's escape-function is too powerful, even the ‘/’ also be escaped… :open_mouth:

Ahhh ok makes sense… I’ll add something.

The functions you’re using aren’t in the projucer, they’re just part of the C++ tokeniser, but I don’t recommend using them for URLs because they’re designed for a totally different purpose and some encodings may differ!

I don’t know, Jules :slight_smile: I found those 2 useful methods in line 550/656 of jucer_UTF8Component.h (Projucer/Utility).

There’re exceptions. (again? :D) In my case, no need to play with any URL. I just need webBrowser goto a string (local html-file path) and display it correctly :slight_smile: I’m sure it’s a bad design though :slight_smile:

I think you must be on a very old version?

OS X: 10.12.2
Xcode: 8.2.1
JUCE: 4.3.0 (git master branch, pull the library yesterday night)

Seems the only thing is too old must be my brain :slight_smile:

No, you really aren’t. This is the tip of master:

In any case, I’ve added a fix for this on develop. Should be public very soon…

Oh, yes, my fault :blush: I forgot I’ve ‘jumped to definition’…

Those 2 methods in gui_extra module of JUCE library, code_editor/cppCodeTokeniserFunctions.h


…20 words.