Repository: intellij-rust/intellij-rust
Issue: 'Run rustfmt on Save' breaks unicode

<!--
Hello and thank you for the issue!
If you would like to report a bug, we have added some points below that you can fill out.
Feel free to remove all the irrelevant text to request a new feature.
-->

## Environment

* **Intellij-Rust plugin version:** v0.2.94.2119-183
* **Rust toolchain version:** 
stable-x86_64-pc-windows-gnu (default)
rustc 1.33.0 (2aa4c46cf 2019-02-28)
* **IDE name and version:** Clion 2018.3.4
* **Operating system:** Windows

## Problem description
When enabling 'Run rustfmt on Save', Unicode characters are not handled properly.

```Rust
match self {
                WindowOperation::Sum => "Σ",
                WindowOperation::Product => "Π",
                WindowOperation::Average => "avg",
                WindowOperation::Count => "#",
                WindowOperation::Integral => "∫",
            }
```
becomes
```Rust
match self {
                WindowOperation::Sum => "Î£",
                WindowOperation::Product => "Î ",
                WindowOperation::Average => "avg",
                WindowOperation::Count => "#",
                WindowOperation::Integral => "âˆ«",
            }
```

## Steps to reproduce

<!--
Please include as much of your codebase as needed to reproduce the error.
If the relevant files are large, please provide a link to a public repository or a [Gist](https://gist.github.com/).
-->

Include Unicode characters such as 'Σ' in your string literals and enable 'Run rustfmt on Save'.
After saving, the character should have changed.

In my situation 

'Σ' CE A3
became   
'Î£' CE **8E C2** A3

"Reformat file with rustfmt" works fine.

Changed files:
src/main/kotlin/org/rust/cargo/toolchain/Rustfmt.kt, src/test/kotlin/org/rust/cargo/commands/RustfmtTest.kt

diff --git a/src/main/kotlin/org/rust/cargo/toolchain/Rustfmt.kt b/src/main/kotlin/org/rust/cargo/toolchain/Rustfmt.kt
index b478a9def..658c4a72f 100644
--- a/src/main/kotlin/org/rust/cargo/toolchain/Rustfmt.kt
+++ b/src/main/kotlin/org/rust/cargo/toolchain/Rustfmt.kt
@@ -54,6 +54,7 @@ class Rustfmt(private val rustfmtExecutable: Path) {
             GeneralCommandLine(rustfmtExecutable)
                 .withWorkDirectory(cargoProject.workingDirectory)
                 .withParameters(arguments)
+                .withCharset(Charsets.UTF_8)
                 .execute(owner, false, stdIn = stdIn)
         } catch (e: ExecutionException) {
             if (isUnitTestMode) throw e else null
diff --git a/src/test/kotlin/org/rust/cargo/commands/RustfmtTest.kt b/src/test/kotlin/org/rust/cargo/commands/RustfmtTest.kt
index 1c9919841..8ab126d8c 100644
--- a/src/test/kotlin/org/rust/cargo/commands/RustfmtTest.kt
+++ b/src/test/kotlin/org/rust/cargo/commands/RustfmtTest.kt
@@ -30,7 +30,7 @@ class RustfmtTest : RsWithToolchainTestBase() {
             dir("src") {
                 rust("main.rs", """
                     fn main() {
-                    println!("Hello, world!");
+                    println!("Hello, ΣΠ∫!");
                     }
                 """)
             }
@@ -52,7 +52,7 @@ class RustfmtTest : RsWithToolchainTestBase() {
             dir("src") {
                 rust("main.rs", """
                     fn main() {/*caret*/
-                        println!("Hello, world!");
+                        println!("Hello, ΣΠ∫!");
                     }
                 """)
             }
@@ -81,7 +81,7 @@ class RustfmtTest : RsWithToolchainTestBase() {
             dir("src") {
                 rust("main.rs", """
                     fn main() {/*caret*/
-                        println!("Hello, world!");
+                        println!("Hello, ΣΠ∫!");
                     }
                 """)
             }