On Wed, Mar 9, 2016 at 7:46 PM, Mark Eggers <its_toas...@yahoo.com.invalid> wrote:
> Yuval, > > Notes are inline (I hope). This is quickly becoming a NetBeans question. > > On 3/9/2016 1:38 AM, Yuval Schwartz wrote: > > Thanks Mark, follow up questions below: > > > > On Wed, Mar 9, 2016 at 1:26 AM, Mark Eggers > <its_toas...@yahoo.com.invalid> > > wrote: > > > >> Yuval, > >> > >> On 3/8/2016 2:35 PM, Yuval Schwartz wrote: > >>> On Tue, Mar 8, 2016 at 10:53 PM, Mark Thomas <ma...@apache.org> wrote: > >>> > >>>> On 08/03/2016 20:20, Christopher Schultz wrote: > >>>>> Yuval, > >>>>> > >>>>> On 3/8/16 12:38 PM, Yuval Schwartz wrote: > >>>>>> Hello Christopher, thanks, responses below. > >>>>> > >>>>>> On Tue, Mar 8, 2016 at 6:23 PM, Christopher Schultz < > >>>>>> ch...@christopherschultz.net> wrote: > >>>>> > >>>>>> Yuval, > >>>>> > >>>>>> On 3/8/16 3:14 AM, Yuval Schwartz wrote: > >>>>>>>>> Tomcat version: 8.0.22 Jdk: 1.8.0_05 Server: Amazon Linux > >>>>>>>>> > >>>>>>>>> Hello, > >>>>>>>>> > >>>>>>>>> I want to map my servlet to a Hebrew url pattern. > >>>>> > >>>>>> Hmm. > >>>>> > >>>>>>>>> I tried placing the hebrew url pattern both in the > >>>>>>>>> "@webservlet" annotation (urlpatterns attribute) and in the > >>>>>>>>> the web.xml file. In both cases it doesn't work, it's as if > >>>>>>>>> there's nothing mapped to the url specified. > >>>>>>>>> > >>>>>>>>> I though to specify the URIEncoding parameter of the > >>>>>>>>> connector but saw that this defaults to "utf-8" in tomcat 8. > >>>>> > >>>>>> Yes, it does. > >>>>> > >>>>>> So you are trying to set the url-pattern for a servlet mapping? > >>>>> > >>>>>> When you do it -- either using @WebServlet or <servlet-mapping> -- > >>>>>> can you connect via JMX to observe the pattern that's been read > >>>>>> into the configuration? First, I'd want to make sure that the > >>>>>> Hebrew characters haven't been destroyed by the loading process of > >>>>>> the XML file or by the compiler, or even by Tomcat. > >>>>> > >>>>> > >>>>>>> Can you give me some direction on how I would do this? Maybe a > >>>>>>> little more detail on jmx? There could be encoding/decoding going > >>>>>>> on in the browser (firefox) and in all the elements you mentioned > >>>>>>> on the server side. Any way to see the final String that the > >>>>>>> server is using to match the Url pattern? > >>>>> > >>>>> Yeah, that's why I was suggesting using JMX, since Tomcat exposes all > >>>>> the configuration through it. > >>>>> > >>>>> Launch Tomcat, then fire-up jconsole (or VisualVM, or any other tool > >>>>> that contains a JMX client... both jconsole and VisualVM require that > >>>>> you go to the "plug-ins" configuration and install an > >>>>> easy-to-find-and-install plug-in for JMX) on the same machine (it's > >>>>> easiest this way). > >>>>> > >>>>> (I just checked, and VisualVM calls the plug-in > >>>>> "VisualVM-MBeans".)visualvisual > >>>>> > >>>>> Then, connect to the Tomcat instance and go to the BMeans tab. > >>>>> > >>>>> You'll find your servlet under > >> /Catalina/Servlet/host/context/[servlet]. > >>>>> .. > >>>>> > >>>>> > >>>>> Aw, crap. The mappings themselves aren't actually published via JMX. > >> Hmm > >>>> > >>>> Yes they are. > >>>> > >>>> You need to look at the operations. findMappings() will list them. > >>>> > >>> > >>> I did this and it worked: > >>> The english patterns show up fine, as expected. > >>> The hebrew pattern shows up as a bunch of question marks (eg: > >>> ????-?????-????) > >>> The URLEncoded pattern shows up as wierd symbols (eg: diamond shape, tm > >>> symbol). > >>> > >>> Could this be something in my IDE (Netbeans) settings? The logs for > >>> example, display hebrew characters as question marks. Although my > project > >>> encoding is set as UTF-8. > >>> > >>> Thanks. > >>> > >>> > >>> > >>>> > >>>> Mark > >> > >> Are you developing on Windows? (ah, you are) > >> > >> If so, could you check how you launch NetBeans? My netbeans.conf file > >> contains this on the netbeans_default_options line: > >> > >> -J-Dfile.encoding=UTF-8 > >> > > > > I tried this, still doesn't fix the issue (Although a change is noticed: > > going to help-->about under "system" text changes from "cp1252" to > "UTF-8"). > > > > Good, the change did take. > > If you're working with an existing project, you may have to change the > encoding on that project as well. > > Go to the Properties panel by right-mouse clicking on the project, and > selecting Properties (should be at the bottom, at least it is on > NetBeans 8.1). > > On the Sources panel at the bottom, make sure that the encoding is UTF-8. > > Note that for existing projects you will probably have to change this. > > Also note that for existing files, you'll probably have to do the > following: > > 1. Delete your Hebrew > 2. Outside of NetBeans change that file to UTF-8 > 3. Open in NetBeans > 4. Add the Hebrew > > I know, it's messy, but again NetBeans does not have a plugin to do this > internally. > > > > >> > >> Also, if you're using Maven with NetBeans, UTF-8 has to be set there as > >> well. My projects contain the following in pom.xml: > >> > >> <properties> > >> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> > >> <!-- more stuff --> > >> </properties> > >> > > > > I don't think I use Maven for this. I use the default build process (for > my > > development environment) ie: I right click the project and click "run". > For > > my production I build with "gulp". > > I don't know anything about gulp and how it handles UTF-8 on a Windows > platform. > > I did try my experiment with a standard (ant build) NetBeans project and > used the same method to run it. > > I'm using NetBeans 8.1 with the latest update on Windows 7 64 bit. > I'm using JRE 1.8.0_74. > I'm using Tomcat 7.0.68 > > > > > > >> > >> If you have cygwin installed on Windows, you can use the following: > >> > >> file -bi [filename] > >> > > > > Which file am I supposed to do this for? > > Any file that contains non-ascii characters. It should (hopefully) show > something like the following: > > text/html; charset=utf-8 > > This is for index.jsp after I translated Hello World to Hebrew and > pasted it in. > > > I also did a servlet, and here's what I got: > > text/html; charset=utf-8 > > (since I have HTML in my servlet - urp) > > > > > > >> > >> will tell you the encoding and mime-type. > >> > >> iconv will help you convert from us-ascii to UTF-8. The syntax is: > >> > >> iconv -f [from-encoding] -t [to-encoding] [input-file] > output-file > >> > > > > Are you suggesting I convert all of my source files to UTF-8? > > See previous post for fixing existing files. You may have to re-enter > non-ascii characters. > > > Will all new files that are created now be in UTF-8 at least? Because I > > just created a new servlet for testing purposes (after the > > -J-Dfile.encoding property was added) and hebrew urls still aren't found. > > > > New files will be created and shown as us-ascii (at least on my system). > However, as soon as you add non-ascii text and save the file, it should > be saved as UTF-8. > Yes, this is what happens for me too. > > Make sure that any output that you're generating has the encoding set to > UTF-8. > > Also, make sure your connector is set to UTF-8 with: > > URIEncoding="UTF-8" > > This gets output with UTF-8. In other words, if I paste the Google > translate to Hebrew output for "Hello World" into either a servlet or > JSP page, I see the Hebrew output displayed in my browser. > > Unfortunately, when I tried a URL in web.xml, this did not work. > > The browser sent an encoded string. I tried firefox with the charset > plugin, but the tamper plugin still showed an encoded (not UTF-8) URL > being sent. > > Using the encoded string in web.xml as a URL pattern did not work. > > Obviously I am a bit of a neophyte when it comes to seriously encoding a > web application for UTF-8, although I can get output to work. > Right, if I understood you correctly, this is the same exact problem I am having. All of my content displays fine (this is "character encoding") but I cannot map urls in hebrew (this is "URL encoding"). This is the problem I am having (note also that I have no problem with query strings in utf8 either). > > I'll try to play with this later and see if I have any ideas. > Thank you. If you get the URL's working I'll try to mimic your set up. > > > > >> > >> I suspect there are native Windows tools to do this, but I'd have to > >> wander about and find them. > >> > >> Notepad will tell you when you open a file what encoding the file is. > >> You could then do a "save as" and select the correct encoding. > >> > >> Sadly, NetBeans does not have a plugin to do this. > >> > >> . . . just my two cents > >> > > > > Thanks. > > > > > >> /mde/ > > . . . just my two cents > /mde/ > >