UTF-8编码问题(最后一个unicode字符是什么)

时间:2009-09-25 14:57:52

标签: utf-8 internationalization

我们正在开放我们的应用程序,以支持多种语言。我们在此过程中遇到的一个问题是我们为客户提供的功能。想象一下,用户会看到3个字段。

  1. 所有客户都是切换
  2. 来自客户名称是他们可以输入的字段
  3. 客户名称是他们可以输入的字段。
  4. 从用户体验的角度来看,如果您选择所有客户“从”和“到”被禁用

    代码中发生的情况是,如果客户选择“所有客户”,我们会查找客户名称大于或等于“”(空白)且小于或等于“}}}}}}的所有客户记录“(在ANSI中可以正常工作)。

    当我们在名字的第一个字母中放入一个中文字符时,这不起作用,因为中文字形的代码大于“}”。 UTF-8中的字符是“最后一个字符”,所以我可以替换它吗?

    我们打算支持多种语言,所以如果该解决方案仅适用于中文,则无法帮助我们。

    由于 凯文

4 个答案:

答案 0 :(得分:2)

当选择“所有客户”时,运行查询而不考虑客户名称。

是的,这意味着一种新的替代执行路径。是的,它并不“聪明”。

同时,它将更易读,更容易在以后进行故障排除。 KISS

答案 1 :(得分:1)

创建包含所有其他条件的基本select语句,然后根据是否填写from / to字段添加from / to条件,这不是更简单吗?像这样:

sql = "select a,b,c from users where c = 123";
if(!from.empty())
   sql += " and name >= '" + from + "'";
if(!to.empty())
   sql += " and name < '" + to + "'";

答案 2 :(得分:0)

为什么不使用CUSTOMERNAME IS NOT NULL呢?这将允许任何范围的字符,而不用担心任何特定文本编码中的第一个和最后一个字符是什么。

答案 3 :(得分:0)

我会修改应用程序的逻辑,这样您就不必搜索客户的名称以获取对它们的引用。

如果切换“所有客户”开关,只需将所有客户添加到客户列表中。