diff -r a915e6a4b130 modules/org.openbravo.service.json/src/org/openbravo/service/json/AdvancedQueryBuilder.java
--- a/modules/org.openbravo.service.json/src/org/openbravo/service/json/AdvancedQueryBuilder.java	Wed Feb 27 21:52:29 2013 +0100
+++ b/modules/org.openbravo.service.json/src/org/openbravo/service/json/AdvancedQueryBuilder.java	Thu Feb 28 13:34:56 2013 +0530
@@ -726,7 +726,7 @@
         && (operator.equals(OPERATOR_GREATERTHAN) || operator.equals(OPERATOR_GREATEROREQUAL)
             || operator.equals(OPERATOR_IGREATERTHAN) || operator.equals(OPERATOR_IGREATEROREQUAL)
             || operator.equals(OPERATOR_GREATERTHANFIElD) || operator
-            .equals(OPERATOR_GREATEROREQUALFIELD));
+              .equals(OPERATOR_GREATEROREQUALFIELD));
   }
 
   private boolean isLesserOperator(String operator) {
@@ -734,7 +734,7 @@
         && (operator.equals(OPERATOR_LESSTHAN) || operator.equals(OPERATOR_LESSOREQUAL)
             || operator.equals(OPERATOR_ILESSTHAN) || operator.equals(OPERATOR_ILESSOREQUAL)
             || operator.equals(OPERATOR_LESSTHANFIELD) || operator
-            .equals(OPERATOR_LESSOREQUALFIElD));
+              .equals(OPERATOR_LESSOREQUALFIElD));
   }
 
   private String computeLeftWhereClauseForIdentifier(Property property, String key,
@@ -1445,7 +1445,8 @@
     if (value == null || value.trim().length() == 0) {
       return value;
     }
-    String localValue = value.replace(ESCAPE_CHAR + "", ESCAPE_CHAR + ESCAPE_CHAR + "");
+    String escapeChar = "|";
+    String localValue = value.replace(escapeChar + "", escapeChar + escapeChar + "");
     localValue = localValue.replace("_", ESCAPE_CHAR + "_");
     localValue = localValue.replace("%", ESCAPE_CHAR + "%");
     return localValue;
# HG changeset patch
# User Shankar Balachandran <shankar.balachandran@openbravo.com>
# Date 1362285687 -19800
# Node ID ff0f1d7beb6e181df7d6f36286ef1e0c3884aa60
# Parent  a673838983f48fe3afc524f95eaf20c126fb0188
Fixes Issue 0023155: Special characters not recognized when filtering in grid view

If the character to be compared is a special character, an escape character '|' was added.
But if the character is '|' , and if the type is char, appending a char '|' again results in adding its ascii value (124) so the text is modified as string 248.
Modified the type of escape character to string for the this replace alone. The rest of the code uses the char definition of escape character.

diff -r a673838983f4 -r ff0f1d7beb6e modules/org.openbravo.service.json/src/org/openbravo/service/json/AdvancedQueryBuilder.java
--- a/modules/org.openbravo.service.json/src/org/openbravo/service/json/AdvancedQueryBuilder.java	Sat Mar 02 05:47:29 2013 +0100
+++ b/modules/org.openbravo.service.json/src/org/openbravo/service/json/AdvancedQueryBuilder.java	Sun Mar 03 10:11:27 2013 +0530
@@ -1452,7 +1452,8 @@
     if (value == null || value.trim().length() == 0) {
       return value;
     }
-    String localValue = value.replace(ESCAPE_CHAR + "", ESCAPE_CHAR + ESCAPE_CHAR + "");
+    String escapeChar = "|";
+    String localValue = value.replace(escapeChar + "", escapeChar + escapeChar + "");
     localValue = localValue.replace("_", ESCAPE_CHAR + "_");
     localValue = localValue.replace("%", ESCAPE_CHAR + "%");
     return localValue;
