Select to view content in your preferred language

Search Widget not Working with non English Characters

828
3
Jump to solution
07-24-2023 06:41 AM
MohammedZaki
Occasional Contributor

Hello,

I am trying to use the search widget with Arabic characters but it returns no result.

I found some articles on editing the where clause and adding the letter N before the search term

How can I add it to the code?

 

Code.png

 

 

2 Solutions

Accepted Solutions
JoelBennett
MVP Regular Contributor

I haven't seen the documentation you're referring to that involves the letter 'N', so not sure if it will work or not.  However, what I can help you with is inserting that letter into your Search tool's queries.  Although it's about a completely different issue, this thread shows multiple approaches of adjusting the query created by the Search tool before it's sent.  Perhaps using one of those approaches will accomplish what you're trying to do.

For example, if you go with the first suggested approach, you would have something like this at line 5 instead:

query.where = query.where.replace(/ LIKE '/g, " LIKE 'N");

 

View solution in original post

MohammedZaki
Occasional Contributor

Thanks a lot, @JoelBennett  that was very helpful. I changed the code a little bit to work with TypeScript. Appreciate your help.

MohammedZaki_0-1690327652755.png

Regarding the use of the letter N in SQL (as the feature layers are not hosted in my case, we are dealing here with registered enterprise geodatabase layers)

The letter "N" before the string in SQL stands for the National Language Character Set (NCHAR) prefix. In SQL, prefixing a string with "N" indicates that the string is in Unicode format. Unicode is a character encoding that supports a wide range of characters and symbols from various writing systems, including Arabic, Chinese, Japanese, Cyrillic, and many others.

When dealing with non-ASCII characters, such as Arabic letters, it is important to use Unicode encoding to ensure proper handling and representation of these characters in the database. Using the "N" prefix in the SQL query, as in this example, allows the database to interpret the string as Unicode, and thus, it can correctly match and query the Arabic words in the "governorate" field.

View solution in original post

3 Replies
JoelBennett
MVP Regular Contributor

I haven't seen the documentation you're referring to that involves the letter 'N', so not sure if it will work or not.  However, what I can help you with is inserting that letter into your Search tool's queries.  Although it's about a completely different issue, this thread shows multiple approaches of adjusting the query created by the Search tool before it's sent.  Perhaps using one of those approaches will accomplish what you're trying to do.

For example, if you go with the first suggested approach, you would have something like this at line 5 instead:

query.where = query.where.replace(/ LIKE '/g, " LIKE 'N");

 

MohammedZaki
Occasional Contributor

Thanks a lot, @JoelBennett  that was very helpful. I changed the code a little bit to work with TypeScript. Appreciate your help.

MohammedZaki_0-1690327652755.png

Regarding the use of the letter N in SQL (as the feature layers are not hosted in my case, we are dealing here with registered enterprise geodatabase layers)

The letter "N" before the string in SQL stands for the National Language Character Set (NCHAR) prefix. In SQL, prefixing a string with "N" indicates that the string is in Unicode format. Unicode is a character encoding that supports a wide range of characters and symbols from various writing systems, including Arabic, Chinese, Japanese, Cyrillic, and many others.

When dealing with non-ASCII characters, such as Arabic letters, it is important to use Unicode encoding to ensure proper handling and representation of these characters in the database. Using the "N" prefix in the SQL query, as in this example, allows the database to interpret the string as Unicode, and thus, it can correctly match and query the Arabic words in the "governorate" field.

JoelBennett
MVP Regular Contributor

Very good; thank you also for taking the time to explain.