我有一个页面,它的编码是UTF-8,如果我尝试在unix系统中运行该代码,Everythings看起来很好但是当我尝试在windows(7)中运行时,一些字符看起来是问号( ).如何在两个系统中运行代码都很好(不使用iconv).
header('Content-Type: text/html; charset=UTF-8');
setlocale(LC_ALL, 'turkish');
echo strftime("%d %B %Y, %H:%M");
Run Code Online (Sandbox Code Playgroud) 我nl_NL utf8在我的网络服务器上安装了荷兰语local()(当我执行时,locale -a我看到nl_NL utf8这样就可以了).
但是,我网页上的日期是英文(我已放在setlocale(LC_ALL, 'nl_NL');我的页面顶部).我已经阅读了在编译php后安装locale包时,我必须重新编译php.
但有没有其他解决方案,没有重新编译PHP,让它工作?
谢谢!
æøå是挪威字母表中的最新字母
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Æ Ø Å
List<String> words = Arrays.asList(
"A", "B", "Z", "Æ", "Ø", "Å" );
Locale la = new Locale("nor", "NOR");
Collator coll = Collator.getInstance(la);
coll.setStrength(Collator.PRIMARY);
Collections.sort(words, coll);
System.out.println(""+ words);
Run Code Online (Sandbox Code Playgroud)
答案应该是
A,B,Z,Æ,ØÅ,
但我得到:
A,Å,Æ,B,Z,Ø
任何人都可以建议如何获得高于输出?
我在德国语言环境中安装了一台linux机器.当我在perl中打印float/double时,我希望它以昏迷分开打印而不是点分开.但它没有发生.任何的想法 ?
[root@IDCDVAM886 ~]# uname -a
Linux IDCDVAM886 3.10.0-327.el7.x86_64 #1 SMP Thu Oct 29 17:29:29 EDT 2015 x86_64 x86_64 x86_64 GNU/Linux
[root@IDCDVAM886 ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.2 (Maipo)
[root@IDCDVAM886 ~]# locale
LANG=de_DE.UTF-8
LC_CTYPE="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_COLLATE="de_DE.UTF-8"
LC_MONETARY="de_DE.UTF-8"
LC_MESSAGES="de_DE.UTF-8"
LC_PAPER="de_DE.UTF-8"
LC_NAME="de_DE.UTF-8"
LC_ADDRESS="de_DE.UTF-8"
LC_TELEPHONE="de_DE.UTF-8"
LC_MEASUREMENT="de_DE.UTF-8"
LC_IDENTIFICATION="de_DE.UTF-8"
LC_ALL=de_DE.UTF-8
[root@IDCDVAM886 ~]# echo $LC_ALL
de_DE.UTF-8
[root@IDCDVAM886 ~]# echo $LC_NUMERIC
de_DE.UTF-8
[root@IDCDVAM886 ~]# cat my.pl
#!/usr/bin/perl
use locale;
print "LC_NUMERIC = $ENV{LC_NUMERIC}\n";
print 5/2 ;
print "\n";
my $val = 2,5; …Run Code Online (Sandbox Code Playgroud) 我想添加挪威日期。这样我的网站上可以有两种语言。
根据PHP手册,它说
setlocale()的返回值取决于PHP正在运行的系统。它完全返回系统setlocale函数返回的内容。
如何添加挪威语?
提前致谢。
我想使用setlocale()和strftime()如下。(适用于挪威语和英语)
setlocale(LC_TIME, "C");
echo strftime("%A");
setlocale(LC_TIME, "fi_FI");
echo strftime(" in Finnish is %A,");
setlocale(LC_TIME, "fr_FR");
echo strftime(" in French %A and");
setlocale(LC_TIME, "de_DE");
echo strftime(" in German %A.\n");
Run Code Online (Sandbox Code Playgroud) 我试图setlocale()在Windows 上使用函数来转换其他语言的天名,但它不起作用.
<?php setlocale(LC_ALL, 'nl_NL');
echo date("l", strtotime($variable); ?>
Run Code Online (Sandbox Code Playgroud)
有没有人可以选择setlocale()?我使用Codeigniter框架.
我有一个不同语言的本地化网站
用户可以选择在配置文件中使用的语言,这将在PageLoad 之前应用
context.setLocalString("en")
Run Code Online (Sandbox Code Playgroud)
“en”默认为 en-US 我相信所以网站上的日期以美国格式显示,所以我知道我可以使用它。
context.setLocale(new Locale("en","gb"))
Run Code Online (Sandbox Code Playgroud)
setLocal 的问题在于它不会更新 HTML lang="en" 属性,因此事件虽然在使用 setLocal 后日期是正确的,但使用的语言文件仍然是 englisn(US) 而不是 english(uk) 一个。(即不是 html lang="en-gb")
因此,当来自英格兰的用户在他们的个人资料中将他们的语言设置为 en-uk 时,他们会获得美国语言文件。
所以我试着这样做
context.setLocale(new Locale("en","gb"))
context.setLocalString("en-GB")
Run Code Online (Sandbox Code Playgroud)
但随后 setLocalString 覆盖了 setLocalString ,反之亦然。所以看起来我不能同时使用它们
有什么方法可以在 beforePageLoad 上添加代码,以确保 html lang 属性使用正确的语言进行更新,并且我的日期以正确的语言集格式显示?
我想存储 Linux 上 setlocale() 函数返回的区域设置名称。与Windows平台一样,最大区域设置大小定义为LOCALE_NAME_MAX_LENGTH,是否有为Linux定义类似的宏?另外,我需要在上述两个平台上使用相同的缓冲区。
char buffer[];
buffer = setlocale(LC_ALL, NULL);
Run Code Online (Sandbox Code Playgroud) 您好,我来这里是为了解决Locale格式化程序语言的DateTimeFormatter问题,让我向您介绍一下:
堆栈跟踪观察到的错误:
Exception in thread "main" java.time.format.DateTimeParseException: Text '28-dic-2017' could not be parsed at index 3
at java.base/java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:2051)
at java.base/java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1953)
at java.base/java.time.LocalDate.parse(LocalDate.java:429)
at com.examen.Presentation.Principal.parseDate(Principal.java:28)
at com.examen.Presentation.Principal.main(Principal.java:19)
Run Code Online (Sandbox Code Playgroud)
最小的、可重现的代码示例:
public static LocalDate parseDate(String fecha) {
Locale loc = new Locale("es", "ES");
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MMM-yyyy", loc);
LocalDate date = LocalDate.parse(fecha, formatter);
return date;
}
Run Code Online (Sandbox Code Playgroud)
我在尝试来自语言环境的不同事物和方法时遇到了同样的错误,而 DateTimeFormatter 甚至不知道我在做什么,但我认为这显然不会起作用。
我正在尝试在JSP中设置本地.
我以为我能做的事情如下:
<fmt:setLocale value="${param['local']}" scope="session"/>
Run Code Online (Sandbox Code Playgroud)
关于这个主题的Java自己的页面似乎说得非常多.
但是,当我去执行它时,我得到:
HTTP Status 500 -
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException: /pages/ResourceBundlesJSTL.jsp(11,0) According to TLD or attribute directive in tag file, attribute value does not accept any expressions
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40)
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:148)
org.apache.jasper.compiler.Validator$ValidateVisitor.checkXmlAttributes(Validator.java:1232)
org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:868)
org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:1539)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2376)
org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2428)
org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2434)
org.apache.jasper.compiler.Node$Root.accept(Node.java:475)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2376)
org.apache.jasper.compiler.Validator.validateExDirectives(Validator.java:1787)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:211)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:360)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:340)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:327)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:594)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:316)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
note The full stack trace of the root cause …Run Code Online (Sandbox Code Playgroud) 我对此遇到了麻烦,因为我有 3 位数代码(美元、欧元、COP 等)的货币。
如果你去使用函数 setlocale 你需要做这样的事情:
setlocale(LC_MONETARY, 'en_US');
看看你传递的是“en_US”而不是“USD”。我怎样才能知道用户选择的每种货币的 LC_MONETARY 的相应语言环境,以便与 setlocale 一起使用。
此外,在我的网站中,货币与语言无关,例如,您的网站是西班牙语,但您可以看到美元的货币。这将导致像这样的语言环境:es_US ???? 我相信它不支持。
谢谢。