当我查看这个物理编码为UTF-8并且在我的PC上使用UTF-8指定为charset(使用firefox)的网页时,它不会显示需要正确编码多个字节的字符,例如Björk中的ö ,请点击链接,然后打开B部分,看看我的意思
http://www.jthink.net/songkong/reports/FixSongsReport00084/FixSongsReport00084_index.html
(该页面使用jakarta-tomcat托管在linux服务器上)
但是,当我在硬盘上存储为文件时,原始文件在Firefox中显示完全正常.我甚至将文件从远程站点复制回我的本地PC以确保具有相同的文件,它仍然显示正常.
那怎么会在网站上显示不好,这可能是一个tomcat问题吗?
编辑 在第一个答案的评论中,它说我需要确保我需要正确设置响应编码,我该怎么做 - html页面不是由代码生成的tomcat只是提供的页面提供
注意我不要将uri参数解析为utf8,并且我不希望我创建的jsp页面编码为UTF8,这些都会像ISO-8859-1一样处于罚款状态,如果我更改它们可能会中断.我只想将.html页面显示为UTF8,并且仅针对此应用程序,我在webapps文件夹中有多个应用程序,我使用的是Tomcat 7
编辑
因此,正如下面的答案所示,我已添加到我的web.xml文件中
<filter>
<filter-name>CharacterEncoding</filter-name>
<filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<mime-mapping>
<extension>html</extension>
<mime-type>text/html;charset=UTF-8</mime-type>
</mime-mapping>
Run Code Online (Sandbox Code Playgroud)
和那种工作,网址现在正确显示,但链接不起作用.
当我查看源它似乎使用正确的链接,但错误消息显示它是扩展表示法而不是UTF8.
她的整个报告,所以你可以点击左侧的链接,并在右侧看到结果
http://www.jthink.net/songkong/reports/FixSongsReport00084/FixSongsReport00084.html
即使我复制链接和粘贴它也不起作用,因为链接似乎被粘贴是错误的,虽然它然后纠正自己
我一直在发送来自Java的最好的电子邮件没有问题,但我现在正在尝试发送一个html如下:
MimeMessage message = new MimeMessage(Email.getSession());
message.setFrom(new InternetAddress("support@jthink.net"));
message.addRecipient(Message.RecipientType.TO, new InternetAddress(to, true));
message.setSubject(subject);
message.setContent(msg, "text/html");
message.setText(msg);
message.saveChanges();
Transport.send(message);
Run Code Online (Sandbox Code Playgroud)
然而,当我在我的客户端收到它时,它接收它作为纯文本电子邮件,即它显示所有的html标签而不是它们用于格式化,我检查了电子邮件标题,它确实说
Content-Type: text/plain; charset=us-ascii
Run Code Online (Sandbox Code Playgroud)
在邮件标题中
但为什么因为我将"text/html"传递给setContent()方法,这似乎是你唯一要做的事情.
我目前有一个Elastic Beanstalk实例运行部署到Tomcat的Java应用程序.我使用Web界面部署应用程序,但应用程序使用web.xml中引用的数据文件(Lucene索引),通过ssh-ing到EC2并从我的S3存储桶获取数据文件,我将其复制到底层EC2实例.
到现在为止还挺好.
但是,如果我将EB更改为可自动缩放的环境,以便它根据需要自动创建新实例,那么这些EC2实例将没有数据文件,我该如何处理.
*更新*
我想我已经原则上解决了这个问题.我是从我的本地计算机上传我的应用程序,然后从亚马逊添加大数据文件.我需要做的是在我的数据处理EC2实例上构建我的战争,在某处将数据文件添加到war,然后将此战争放到S3上,然后当我创建我的EB时,我需要从S3存储桶加载WAR.
因此,只需要确定数据文件在战争中的位置以及如何通过Maven构建过程进行创建.
*更新2*
实际上还不清楚数据文件应该放在WAR文件中,我看不到放在哪里,应用程序希望它们是真实的文件,所以如果包含在WAR中并且WAR没有扩展/未调整(我不知道)什么EB)应用程序无论如何都不会工作.
*更新3*
我当然可以把数据放在S3中(事实上它可能会在那里开始)所以我想知道在服务器初始化我是否可以获取s3数据并将其放在某处然后使用它?请指导.
*更新4*
所以使用s3的想法我几乎让它工作,在servlet init()方法中我得到压缩文件,将它保存到当前工作目录(/ usr/share/tomcat7 /)然后解压缩它.麻烦的是压缩文件是2.7GB,它解析的未压缩文件夹是5GB,EB使用的次要实例提供8GB,其中2GB使用.所以我有6GB这是足够的空间用于未压缩文件,但不保存压缩文件,然后解压缩,因为在解压缩过程中我需要2.7 GB + 5 GB.
我将压缩版本加载到S3,因为原始数据不是单个文件,而是一个文件夹,它很难作为文件列表进行管理.我无法在EB中更改根目录的大小,我可以尝试更改为一个功能强大的实例,但这样会非常昂贵,并且不清楚ECB使用的实例提供了什么磁盘空间.有任何想法吗 ?
这些是我添加到我的maven repo的依赖项
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk</artifactId>
<version>1.8.2</version>
</dependency>
<dependency>
<groupId>org.rauschig</groupId>
<artifactId>jarchivelib</artifactId>
<version>0.6.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
这是代码
@Override
public void init()
{
try
{
log.severe("Retrieving Indexes from S3");
AWSCredentials credentials = new BasicAWSCredentials("***********", "***********");
AmazonS3Client ac = new AmazonS3Client(credentials);
log.severe("datalength-testfile:"+ac.getObjectMetadata("widget","test.txt").getContentLength());
File testFile = new File("test.txt");
ac.getObject(new GetObjectRequest("widget", "test.txt"), testFile);
log.severe("datalength-testfile:retrieved");
log.severe("datalength-largefile:"+ac.getObjectMetadata("widget","indexes.tar.gz").getContentLength());
File largeFile = new File("indexes.tar.gz");
ac.getObject(new GetObjectRequest("widget", "indexes.tar.gz"), largeFile); …Run Code Online (Sandbox Code Playgroud) 在部署时,我将数据文件从S3复制到我的根驱动器以供Tomcat应用程序使用.这是完美的工作,麻烦是根磁盘只有8GB,我的数据文件将很快大于那个.我想稍微增加根磁盘的大小(15GB应该可以再使用一年)而无需转移到更大的更昂贵的EC2实例,我现在正在使用m3.medium.
由于EB使用我需要正确的EC2配置以根据需要启动,我无法通过手动添加另一个磁盘来修改已在运行的实例.我正在使用EB负载平衡,因此实例可能会来满足需求.
我刚把我的项目代码从java.net移到了BitBucket.但我的jira问题跟踪仍然托管在java.net上,虽然BitBucket确实有一些链接到外部问题跟踪器的选项我不认为我可以将它用于java.net,尤其是因为我没有管理员权限需要安装DVCS连接器.
所以我认为另一种选择是导出然后将问题导入BitBucket问题跟踪器,这可能吗?
到目前为止的进展 所以我尝试使用下面的OSX来完成两个信息性答案中的步骤但我遇到了一个问题 - 我对这个脚本实际被调用的内容感到困惑,因为在答案中它讨论了export.py但是没有这样的脚本存在用这个名字,所以我重命名了我下载的那个.
在rcore文件夹中创建.config
创建包含的.config/jira-issues-move-to-bitbucket.conf
JIRA-用户名= paultaylor
jira-hostname = https://java.net/jira/browse/JAUDIOTAGGER
JIRA密码=密码
运行python export.py --jira-project jaudiotagger
给
macbook:rcore paul$ python export.py --jira-project jaudiotagger
Traceback (most recent call last):
File "export.py", line 24, in <module>
import configparser
ImportError: No module named configparser
- Run python export.py --jira-project jaudiotagger
Run Code Online (Sandbox Code Playgroud)
我需要像root一样运行pip insdtall
那很有效
但现在
在使用Maven(和一点点蚂蚁)在Windows上构建应用程序之后,我手动创建了Winrar Sfx安装程序,如下所示:
但是我可以使用Windows批处理文件/ Maven或ant自动执行部分/全部操作吗?
如何在Postgres 9表中删除重复行,每个字段上的行完全重复,并且没有单独的字段可以用作唯一键,所以我不能只GROUP BY使用列并使用NOT IN语句.
我正在寻找一个单独的SQL语句,而不是一个需要我创建临时表并将记录插入其中的解决方案.我知道如何做到这一点,但需要更多的工作来适应我的自动化过程.
表定义:
jthinksearch=> \d releases_labels;
Unlogged table "discogs.releases_labels"
Column | Type | Modifiers
------------+---------+-----------
label | text |
release_id | integer |
catno | text |
Indexes:
"releases_labels_catno_idx" btree (catno)
"releases_labels_name_idx" btree (label)
Foreign-key constraints:
"foreign_did" FOREIGN KEY (release_id) REFERENCES release(id)
Run Code Online (Sandbox Code Playgroud)
样本数据:
jthinksearch=> select * from releases_labels where release_id=6155;
label | release_id | catno
--------------+------------+------------
Warp Records | 6155 | WAP 39 CDR
Warp Records | 6155 | WAP 39 CDR
Run Code Online (Sandbox Code Playgroud) 将Com4j与iTunes一起使用,将各种文本值添加到IITrack对象没有问题,但是如果我尝试添加艺术作品
if(iTunesTrack.artwork().count()==0)
{
String path = new File(new File(song.getFilename()).getParent(),"folder.jpg").getPath();
if(Files.exists(Paths.get(path)))
{
iTunesTrack.addArtworkFromFile(path);
}
}
Run Code Online (Sandbox Code Playgroud)
它失败了
11/05/2017 18.24.56:BST:com.jthink.songkong.ituneshelper.WindowsUpdateItunesWithChanges:updateITunesLibTrackFromSong:SEVERE:无法更新ItunesTrack C:\ Users\Paul\Desktop\TestMusic\WAV\Music \唱片三一学院\ Carols来自Trinity\27 - 在Dulci Jubilo(管风琴独奏).wav:8000ffff灾难性失败:灾难性失败com4j.Com例外:8000ffff灾难性失败:灾难性失败:.\ invoke.cpp:517 at com4j.Wrapper.invoke(Wrapper.java: 187)at com.sun.proxy.$ Proxy57.addArtworkFromFile(Unknown Source)at com.jthink.songkong.ituneshelper.WindowsUpdateItunesWithChanges.updateITunesLibTrackFromSong(WindowsUpdateItunesWithChanges.java:611)at com.jthink.songkong.ituneshelper.WindowsUpdateItunesWithChanges.addEditedTrack(WindowsUpdateItunesWithChanges .java:646)com.jthink.songkong.ituneshelper.WindowsUpdateItunesWithChanges.analyseFiles(WindowsUpdateItunesWithChanges.java:277)at com.jthink.songkong.ituneshelper.WindowsUpdateItunesWithChanges.updateItunes(WindowsUpdat)eItunesWithChanges.java:180)at com.jthink.songkong.ituneshelper.UpdateItunesWithChanges.call(UpdateItunesWithChanges.java:182)at com.jthink.songkong.ituneshelper.UpdateItunesWithChanges.call(UpdateItunesWithChanges.java:32)at java.util.concurrent来自java.util.conc.Thread上的java.util.concurrent.ThreadPoolExecutor.runWorker(未知来源)的.futureTask.run(未知来源)java.lang.Thread.run上的java.man.run(未知来源)$(未知来源)引起:com4j.ComException:8000ffff灾难性故障:灾难性故障:.\ invoke.cpp:517 at com4j.Native.invoke(Native Method)at com4j.StandardComMethod.invoke(StandardComMethod.java:35)at com4j.Wrapper $ InvocationThunk .call(Wrapper.java:356)at com4j.Task.invoke(Task.java:50)at com4j.ComThread.run0(ComThread.java:172)at com4j.ComThread.run(ComThread.java:153)
COM4j接口是从我的iTunes版本构建的,所以它们存在,我不知道我做错了什么或者它是否坏了,我已经尝试过一些具有相同结果的jpogs.我检查文件是否存在,如果尝试添加不存在的文件,确实错误是不同的.
如果SwingWorker任务被取消,我如何知道中断方法何时完成.
我简化了代码.FixSongsController.start()在后台运行.完成后,将创建一个报告,完成后,将使用该done()方法显示报告.
有一个进度对话框运行,如果用户选择取消(同时FixSongsController.start()运行),这则调用cancel(true)上SwingWorker导致被发送到一个中断FixSongsController.start().麻烦的是,一旦它被发送,它就会调用createReport().
我不想在FixSongsController.start()实际完成之前开始创建报告.我看不出如何确定何时发生.
如果我createReport从修复歌曲中删除代码FixSongsDialog和isCancelled()检查问题更糟,因为然后FixSongsDialog尝试在创建之前显示报告.
我以为我可以使用SwingWorker.getState()但是一旦cancelTask被调用的doInBackground()任务被中断并且即使FixSongsController方法仍在整理之后不久就完成.
然后我想我可以在其块SwingWorker.setProgress()中的FixSongsController.start()方法中使用finally并添加一个只showReport在进度值发生变化但是setProgress受到保护时才会调用的侦听器,因此我无法在FixSongs类本身之外访问它.
SwingWorker 类
public class FixSongs extends SwingWorker<String, Object>
{
@Override
public String doInBackground() throws Exception
{
try
{
new FixSongsController().start();
if (!isCancelled())
{
new FixSongsReportCreator().createReport();
}
return ""; …Run Code Online (Sandbox Code Playgroud) java ×4
tomcat ×2
amazon-ec2 ×1
bitbucket ×1
com ×1
com4j ×1
duplicates ×1
export ×1
html ×1
https ×1
hyperlink ×1
import ×1
itunes ×1
jakarta-mail ×1
jira ×1
maven ×1
postgresql ×1
sfx ×1
sql ×1
swingworker ×1
url ×1
utf-8 ×1
winrar ×1