Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Spring+RSS+ContentNegotiatingViewResolver+локаль


Автор: lamao 1.8.2012, 17:31
В приложении есть поддержка RSS. Сделано это с помощью ContentNegotiatingViewResolver. Соответствующий маппинг вот
Код

<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
        <property name="order" value="1"/>
        <property name="mediaTypes">
            <map>
                <entry key="json" value="application/json"/>
                <entry key="xml" value="application/xml"/>
                <entry key="rss" value="application/rss+xml"/>
            </map>
        </property>

        <property name="defaultViews">
            <list>
                <!-- RSS View -->
                <bean class="org.jtalks.jcommune.web.view.RssViewer"/>
            </list>
        </property>
        <property name="ignoreAcceptHeader" value="true"/>

    </bean>


Также есть возможность выбрать язык - русский, украинский, английский. И вот если в контенте есть кирилица, но язык выбран английский, то вылазят кракозябры. Если язык кирилический - все нормально.

Автор: leniviy 1.8.2012, 21:46
Возможно эта RSS библиотека пытается выводить контент не в UTF-8, а в cp1251 и cp1252.
Тогда эта кодировка передается в метод response.setCharacterEncoding(), можно поставить брекпоинт на этот метод во всех имплементациях Response.
Возможно это не спринг, а сервлет контейнер виноват. Tomcat, например, под виндами не использует utf-8 по дефолту

Автор: leniviy 1.8.2012, 22:24
У тебя есть класс, который расширяет AbstractRssFeedView ?
Попробуй в нём вызвать setContentType("text/html;charset=UTF-8");

Автор: lamao 2.8.2012, 11:12
Цитата(leniviy @ 1.8.2012,  22:24)
У тебя есть класс, который расширяет AbstractRssFeedView ?
Попробуй в нём вызвать setContentType("text/html;charset=UTF-8");

Спасибо за направление. Помогло. В своем сабклассе AbstractRssFeedView в конструкторе вызвал

Код

setContentType("application/rss+xml;charset=UTF-8")


В оригинальном AbstractRssFeedView было без кодировки.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)