[ 
https://issues.apache.org/jira/browse/OFBIZ-13168?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17895921#comment-17895921
 ] 

Nicolas Malin commented on OFBIZ-13168:
---------------------------------------

Hello,

Java doesn't support correctly Unicode whitespace [1], I propose to simplify 
this fix with remove all char that isn't logical, like this :

 
{code:java}
diff --git 
a/framework/base/src/main/java/org/apache/ofbiz/base/util/ObjectType.java 
b/framework/base/src/main/java/org/apache/ofbiz/base/util/ObjectType.java
--- a/framework/base/src/main/java/org/apache/ofbiz/base/util/ObjectType.java   
 (revision f41e0a39bd8878a1f0b6166d5f1eae8ad15ae4ff)
+++ b/framework/base/src/main/java/org/apache/ofbiz/base/util/ObjectType.java   
 (date 1730887670616)
@@ -334,10 +334,7 @@
             // numeric types : replace non-breaking spaces (which break 
parsing) by normal spaces
             List<?> numericClasses = UtilMisc.toList(BigDecimal.class, 
Double.class, Float.class);
             if (obj instanceof String && numericClasses.contains(targetClass)) 
{
-                final String[] tmp = {String.valueOf(obj)};
-                List<Character> nonBreakingWhitespaces = 
UtilMisc.toList('\u00A0', '\u202F', '\u2007');
-                nonBreakingWhitespaces.forEach(character -> tmp[0] = 
tmp[0].replace(character, ' '));
-                obj = tmp[0];
+                obj = 
String.valueOf(obj).replaceAll("[^\\p{Alnum}\\p{Punct}]", " ");
             }
 {code}
[1] https://stackoverflow.com/questions/4731055/whitespace-matching-regex-java

> String to numeric conversion does not support non-breaking spaces
> -----------------------------------------------------------------
>
>                 Key: OFBIZ-13168
>                 URL: https://issues.apache.org/jira/browse/OFBIZ-13168
>             Project: OFBiz
>          Issue Type: Bug
>          Components: ALL COMPONENTS
>    Affects Versions: 18.12.16, Upcoming Branch
>            Reporter: Florian Motteau
>            Assignee: Jacques Le Roux
>            Priority: Minor
>             Fix For: Upcoming Branch
>
>         Attachments: Peek 05-11-2024 10-59.mp4, 
> image-2024-11-05-11-01-13-030.png
>
>
> When submitting a form with numeric values, OFBiz uses a text input (`<input 
> type="text"/>`), so all characters (entered by hand or pasted) are allowed in 
> the input.
> On form's submission, for numeric fields, the string is parsed using 
> `java.text.NumberFormat` class (parse method), using a number instance 
> formatter.
> This formatter does not supports non-breaking spaces ('\u00A0', '\u202F', 
> '\u2007'), and characters after a non-breaking space are ignored :
> !image-2024-11-05-11-01-13-030.png|width=337,height=153!
> This can lead to a situation where a visually correct form stores wrong 
> values :
> [^Peek 05-11-2024 10-59.mp4]
> One of our client reported this situation while pasting values from external 
> tools. Some values where truncated, because the external tool used 
> non-breaking spaces when displaying values.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to